Java多线程同步问题的探究(一、线程的先来后到)
2010-05-14 00:00:00 来源:WEB开发网核心提示:众所周知,在Java多线程编程中,Java多线程同步问题的探究(一、线程的先来后到),一个非常重要的方面就是线程的同步问题,关于线程的同步,打开房门走出来为止,这就好比多个线程共享一个资源的时候,一般有以下解决方法:1. 在需要同步的方法的方法签名中加入synchronized关键字,2. 使用synchronized
众所周知,在Java多线程编程中,一个非常重要的方面就是线程的同步问题。
关于线程的同步,一般有以下解决方法:
1. 在需要同步的方法的方法签名中加入synchronized关键字。
2. 使用synchronized块对需要进行同步的代码段进行同步。
3. 使用JDK 5中提供的java.util.concurrent.lock包中的Lock对象。
另外,为了解决多个线程对同一变量进行访问时可能发生的安全性问题,我们不仅可以采用同步机制,更可以通过JDK 1.2中加入的ThreadLocal来保证更好的并发性。
本篇中,将详细的讨论Java多线程同步机制,并对ThreadLocal做出探讨。
大致的目录结构如下:
一、线程的先来后到——问题的提出:为什么要有多线程同步?Java多线程同步的机制是什么?
二、给我一把锁,我能创造一个规矩——传统的多线程同步编程方法有哪些?他们有何异同?
三、Lock来了,大家都让开—— Java并发框架中的Lock详解。
四、协作,互斥下的协作——Java多线程协作(wait、notify、notifyAll)
五、你有我有全都有—— ThreadLocal如何解决并发安全性?
六、总结——Java线程安全的几种方法对比。
一、线程的先来后到
我们来举一个Dirty的例子:某餐厅的卫生间很小,几乎只能容纳一个人如厕。为了保证不受干扰,如厕的人进入卫生间,就要锁上房门。我们可以把卫生间想象成是共享的资源,而众多需要如厕的人可以被视作多个线程。假如卫生间当前有人占用,那么其他人必须等待,直到这个人如厕完毕,打开房门走出来为止。这就好比多个线程共享一个资源的时候,是一定要分出先来后到的。
更多精彩
赞助商链接