java并发编程
文章平均质量分 57
石头聊技术
欢迎关注同名公众号,一起探索Java技术的奥秘,共同成长!
展开
-
java并发编程:自定义同步工具
条件谓词在进行某些操作之前,需要进行一些先置条件判断。例如阻塞队列BlockingQueue在进行put操作之前,要先判断队列是否已满,如果已满,就会阻塞,直到队列空出位置出来,才能释放出来,继续执行操作。其中,“队列是否已满”就是条件谓词。条件队列在操作不满足条件谓词时,就会被阻塞,该线程就会被塞入对应锁的等待队列中,这个队列即为条件队列。使用notify的危害队列中如果有多种条件谓词,可能出原创 2017-05-17 17:24:15 · 298 阅读 · 0 评论 -
java并发编程:性能与可伸缩性
可伸缩性的定义增加系统的资源时(如CPU、内存、存储容量或者I/O带宽等),能够增加程序的吞吐量和系统响应速度。Amdahl定律程序中的串行部分比例越高,程序的可伸缩性越低。锁优化方法-降低锁的持有时间(快进快出,将非原子操作,且占用时间较长的如I/O操作等代码移出同步代码块) -降低锁的粒度(锁分解、锁分段) -使用非占用锁(使用ReadWriteLock、原子变量等)原创 2017-05-11 17:45:18 · 397 阅读 · 0 评论 -
java并发编程:同步工具类
闭锁(CountDownLatch)闭锁就相当于一个大门,只有等所有线程都到达之后,门才会开。例如:我约了其它三个人一起打麻将,之后等我们四个人都到了之后,才能开始打麻将。private static void testCountDownLatch() { final CountDownLatch start = new CountDownLatch(1); fi原创 2017-04-19 16:33:21 · 214 阅读 · 0 评论 -
java并发编程:发布与逸出
发布与逸出的定义将线程的对象放在公共域,使其他线程可见,即为发布。 错误的发布,即为逸出。安全的发布方式将对象放在静态域中。对象会在初次使用Test类的时候进行初始化。public class Test { public static Object obj = new Object();}将对象放在final域中。使用volatile修饰或者使用AtomicReference使原创 2017-04-19 16:12:09 · 436 阅读 · 0 评论 -
java并发编程:线程安全性
java并发编程:线程安全性多线程的优势提高资源使用率提高系统的吞吐量提高系统响应速度 多线程的风险线程安全性问题(对象可能会发生竞态条件)活跃性问题(线程可能会出现阻塞、死锁之类的问题)性能问题(线程的不合理使用,可能会导致资源竞争、内存占用过大等问题)线程安全性的定义线程安全性,实际上就是看线程是否按照我们所预期的方式运行,如果是,就是线程安原创 2017-04-19 15:51:15 · 442 阅读 · 0 评论