Java进阶(三)多线程开发关键技术
2017-04-14 16:45
183 查看
http://www.jasongj.com/java/multi_thread/
1.sleep 与wait
2.synchronized
锁的使用是为了操作临界资源的正确性,而往往一个方法中并非所有的代码都操作临界资源。换句话说,方法中的代码往往并不都需要同步。此时建议不使用同步方法,而使用同步代码块,只对操作临界资源的代码,也即需要同步的代码加锁。这样做的好处是,当一个线程在执行同步代码块时,其它线程仍然可以执行该方法内同步代码块以外的部分,充分发挥多线程并发的优势,从而相较于同步整个方法而言提升性能。
释放Java内置锁的唯一方式是synchronized方法或者代码块执行结束。若某一线程在synchronized方法或代码块内发生死锁,则对应的内置锁无法释放,其它线程也无法获取该内置锁(即进入跟该内置锁相关的synchronized方法或者代码块)。
3.Java中的锁
a
)重入锁
Java中的重入锁(即ReentrantLock)与Java内置锁一样,是一种排它锁。使用synchronized的地方一定可以用ReentrantLock代替。
重入锁需要显示请求获取锁,并显示释放锁。为了避免获得锁后,没有释放锁,而造成其它线程无法获得锁而造成死锁,一般建议将释放锁操作放在finally块里,如下所示。
b
)条件锁
条件锁只是一个帮助用户理解的概念,实际上并没有条件锁这种锁。对于每个重入锁,都可以通过newCondition()方法绑定若干个条件对象。
4.信号量Semaphore
相关文章推荐
- Java进阶(三)多线程开发关键技术
- java进阶(三)多线程开发关键技术
- Java进阶(三)多线程开发关键技术
- Java进阶(三)多线程开发关键技术
- Java进阶(三)多线程开发关键技术
- Java进阶(三)多线程开发关键技术
- Java进阶(三)多线程开发关键技术
- Java进阶(三)多线程开发关键技术
- Java进阶(三)多线程开发关键技术
- Java进阶(三)多线程开发关键技术
- 【JAVA开发技术进阶】 Java实现运行任意目录下class中加了@MyTest的空参方法(实现图形界面)
- JAVA系统开发关键技术简介
- JAVA系统开发关键技术简介
- 程序员进阶路上不能错过的史上最全技术知识图谱秘籍 #精选大数据前端开发JAVA 今天在技术大海中游啊游游啊游,哇啊哈哈 ^_^发现了一份非常有用的超级技术图谱诶!
- 从ConcurrentHashMap的演进看Java多线程核心技术 Java进阶(六)
- 混合开发关键技术Java和JS互调并交换数据
- Java进阶(六)从ConcurrentHashMap的演进看Java多线程核心技术
- java 从小白进阶中级开发工程师应该会的一些技术
- Java进阶(六)从ConcurrentHashMap的演进看Java多线程核心技术
- 多线程开发关键技术