Java线程
石印掌纹
这个作者很懒,什么都没留下…
展开
-
关于线程池Executor的一些记录
为了更好的控制多线程,JDK提供了一套线程框架Executor,帮助开发人员有效的进行线程控制。他们都在,java.util.concurrent包中,是JDK并发包的核心。其中有一个比较重要的类Executor:他扮演着线程工厂的角色,我们通过Executors可以创建具有特定功能的线程池。Executors创建线程池的方法: newCachedThreadPool()方法:返回一个可根据...原创 2018-03-27 00:03:10 · 220 阅读 · 0 评论 -
concurrent.util包下的常用类
CyclicBarrier使用: 假设一个场景:每:线程代表一个运动员,当运动员都准备好后才一起出发,只要有一个人没有准备好就一起等待。 CyclicBarrier cb = new CyclicBarrier(3); ExecutorService pool = Executors.newFixedThreadPool(3); pool.submit(new Thread...原创 2018-03-27 11:42:24 · 390 阅读 · 0 评论 -
Java中CAS详解
在JDK 5之前Java语言是靠synchronized关键字保证同步的,这会导致有锁锁机制存在以下问题:(1)在多线程竞争下,加锁、释放锁会导致比较多的上下文切换和调度延时,引起性能问题。(2)一个线程持有锁会导致其它所有需要此锁的线程挂起。(3)如果一个优先级高的线程等待一个优先级低的线程释放锁会导致优先级倒置,引起性能风险。volatile是不错的机制,但是volatile不能保证原子性。因...转载 2018-04-11 11:34:00 · 214 阅读 · 0 评论 -
线程锁
线程锁 在java多线程中,我可以使用synchronized关键字实现线程间的同步互斥工作。其实还有一个更优秀的机制去完成这个同步互斥工作,就是lock锁。lock锁主要分两种:重入锁和读写锁。它们具有比synchronized更优秀的功能,比如嗅探锁定,多路分支等功能。lock锁在jdk1.8之前性能要比synchronized好,但后来synchronized也做了优化,性能上现在并无...原创 2018-03-29 10:54:46 · 191 阅读 · 0 评论 -
线程总结
线程安全概念:1.1 当多线程访问某一个类后者方法时,都能表现出正确的行为,那么这个类就是线程安全的。synchronized:可以在任意对象或者方法上加锁,而加锁的这段代码称之为互斥区或者临界区。当多个线程访问run方法时,以排队的方式(按照cpu分配的先后顺序而定)进行处理,一个线程想要执行synchronized修饰的方法里的代码,首先是尝试获得锁,如果拿到锁,执行synchronized中...原创 2018-05-21 22:17:53 · 276 阅读 · 0 评论