多线程
九幽孤翎
蜉蝣只有认清自己的渺小,才能有化茧成蝶的一天
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Leetcode_1114_按序打印_多线程
学完操作系统,习惯用信号量了 class Foo { Semaphore s1, s2; public Foo() { s1 = new Semaphore(0); s2 = new Semaphore(0); } public void first(Runnable printFirst) throws InterruptedException { printFirst.run(); s1.release原创 2022-02-26 14:38:12 · 2662 阅读 · 0 评论 -
Leetcode_1188_设计有限阻塞队列_多线程
看了一眼自己一年前写的多线程,真的惨不忍睹,所以重写了一遍 class BoundedBlockingQueue { ReentrantLock mutex; Semaphore isFull; Semaphore isEmpty; LinkedList<Integer> list; public BoundedBlockingQueue(int capacity) { isFull = new Semaphore(capacity);原创 2022-02-24 15:35:37 · 649 阅读 · 1 评论 -
Leetcode_1188_设计有限阻塞队列_多线程
import java.util.LinkedList; import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.locks.Condition; import java.util.concurrent.locks.ReentrantLock; class BoundedBlockingQueue { private AtomicInteger size = new AtomicInteger(0)原创 2021-03-23 19:27:25 · 411 阅读 · 0 评论 -
Leetcode_1117_H2O生成_多线程
啥也不说了,我爱死信号量了~ class H2O { private static final Semaphore h = new Semaphore(2); private static final Semaphore o = new Semaphore(0); private volatile boolean flag = false; public H2O() { } public void hydrogen(Runnable releaseHydr原创 2021-03-23 11:03:48 · 211 阅读 · 0 评论 -
Leetcode_1115_交替打印FoodBar_多线程
class FooBar { private int n; volatile private boolean flag = false; public FooBar(int n) { this.n = n; } public void foo(Runnable printFoo) throws InterruptedException { for (int i = 0; i < n; i++) { w原创 2021-03-22 17:05:32 · 164 阅读 · 0 评论 -
Leetcode_1116_打印零和奇偶数_多线程
信号量 class ZeroEvenOdd { private int n; private final Semaphore sp0 = new Semaphore(1); private final Semaphore sp1 = new Semaphore(0); private final Semaphore sp2 = new Semaphore(0); public ZeroEvenOdd(int n) { this.n = n;原创 2021-03-21 16:33:04 · 160 阅读 · 0 评论 -
Leetcode_1279_红绿灯路口_多线程
用一个布尔型变量保存目前红绿灯状态。 如果目前的车能通过红绿灯,就让他通过。 如果不能,改变灯的状态。 class TrafficLight { boolean isAGreen; public TrafficLight() { isAGreen = true; } synchronized public void carArrived( int carId, // ID of the car原创 2021-03-21 11:50:48 · 745 阅读 · 0 评论 -
Leetcode_1226_哲学家进餐_多线程
写法和标程一样 很经典的信号量应用。 用信号量可以限制进入的人数,从而规避死锁。 信号量初始值的选用对性能的影响是这道题的精华所在。 import java.util.concurrent.locks.ReentrantLock; import java.util.concurrent.Semaphore; class DiningPhilosophers { private final ReentrantLock[] ForkList = {new ReentrantLock(),new Re原创 2021-03-21 10:55:28 · 288 阅读 · 1 评论 -
Leetcode_1114_按序打印_多线程
用volatile的可见性来控制先后顺序就完事了,官方题解的原子类我还没学QAQ class Foo { private volatile boolean isFirstFinished = false; private volatile boolean isSecondFinished = false; public Foo() { } public void first(Runnable printFirst) throws Int原创 2021-03-20 22:21:11 · 158 阅读 · 2 评论 -
Java并发编程——JDK并发包 学习笔记(持续更新ing)
学习资料:《Java高并发程序设计》以及大佬的博客 后续会根据《深入理解计算机系统》,《Java并发编程的艺术》,《Java并发编程实战》,极客时间的Java并发编程实战课程 等内容补充完善 以下大部分阐述来自上述书籍与课程中个人认为很重要的部分,也有部分心得体会,后续还会更新各种并发相关笔记,点点关注不迷路!ヽ(✿゚▽゚)ノ 一.JAVA中多线程同步控制的工具 1.重入锁 重入锁是synchronized的强化版。 在包java.util.concurrent.locks.ReentrantLock内.原创 2021-03-18 19:24:23 · 620 阅读 · 0 评论 -
JAVA并行程序基础 学习笔记
学习资料:《深入理解计算机系统》,《Java高并发程序设计》,《Java并发编程实战》,《Java并发编程的艺术》,《Java核心技术卷1》多线程一章,极客时间王宝令的Java并发编程实战课程… 以下大部分阐述来自上述书籍与课程中个人认为很重要的部分,也有部分心得体会。 一.概念辨析 1.进程 & 线程 进程:操作系统对一个正在运行的而程序的一种抽象。在一个系统上可以同时运行多个进程,而每个进程都好像在独占地使用硬件。而并发运行,则是说一个进程的指令和另一个进程的指令是交错执行的。这种机制叫做上下文原创 2021-03-13 11:11:31 · 6251 阅读 · 13 评论
分享