01 2022 档案

摘要:1,CountdownLatch适用于所有线程执行结束后了(指定的事件都发生了),放开封锁,目标事件(线程)执行。例如:我制作一个汽车,每个零件的制作是一个进程,组装是一个进程,需要等到所有的零件制作进程执行结束,才会触发将汽车组装进程。 而CyclicBarrier则适合让所有线程在同一点同时执行 阅读全文
posted @ 2022-01-24 13:20 陈建江 阅读(55) 评论(0) 推荐(0) 编辑
摘要:1,信号量是什么 用于表明可用的互斥资源个数,由此作为标志,使得多个进程互斥的使用互斥资源 2,信号量的应用场景 多个进程需要互斥的访问少量资源 3,代码示例 import java.util.concurrent.Semaphore; import java.util.concurrent.Tim 阅读全文
posted @ 2022-01-14 13:09 陈建江 阅读(78) 评论(0) 推荐(0) 编辑
摘要:读写锁:* 写操作需要独占锁,只允许一个进行进行写操作* 读操作时共享锁,运行多个进行同时进行都操作应用场景:代码示例: import java.util.concurrent.TimeUnit; import java.util.concurrent.locks.ReadWriteLock; im 阅读全文
posted @ 2022-01-14 13:05 陈建江 阅读(28) 评论(0) 推荐(0) 编辑
摘要:1,对List进行优化 import java.util.*; import java.util.concurrent.CopyOnWriteArrayList; public class JucTest3 { public static void main(String[] args) { /** 阅读全文
posted @ 2022-01-11 23:22 陈建江 阅读(143) 评论(0) 推荐(0) 编辑
摘要:1,普通方法synchronized锁的是当前对象: 2,静态的synchronized方法锁的当前类对象 3,哪个线程先获取到锁,它就先执行。 4,类对象锁不会比普通对象锁先执行。 示例代码: import java.util.concurrent.TimeUnit; public class J 阅读全文
posted @ 2022-01-11 22:32 陈建江 阅读(167) 评论(0) 推荐(0) 编辑
摘要:实现精准唤醒:A执行后,B执行,B执行后C执行,C执行后A执行——》针对多线程下生产流水线问题,例如:C需要执行必须完成B操作,B操作需要执行必须要完成A操作代码示例如下所示: import java.util.concurrent.locks.Condition; import java.util 阅读全文
posted @ 2022-01-11 13:14 陈建江 阅读(67) 评论(0) 推荐(0) 编辑
摘要:以下的代码示例:先使用了synchronized关键字来实现生产者消费者,而后使用了JUC中的lock及其condition来实现生产者消费者 import java.util.concurrent.locks.Condition; import java.util.concurrent.locks 阅读全文
posted @ 2022-01-10 22:44 陈建江 阅读(38) 评论(0) 推荐(0) 编辑
摘要:1,注意:线程就是一个单独的资源类,没有任何附属的操作:例如现在有一个ticket类用于记录火车票,已经卖票的方法,这个ticket类就是资源类。多个线程去操控这个资源类的买票方法,最终实现卖票。 代码示例如下: import java.util.concurrent.locks.Lock; imp 阅读全文
posted @ 2022-01-09 23:31 陈建江 阅读(54) 评论(0) 推荐(0) 编辑