/**
* 有效的减少同步范围可以在保证安全的前提下提高并发效率
* 控制同步的代码范围可以使用"同步块"
* synchronized(同步监视器){
* 需要同步的代码片段
* }
*
* 同步监视器:需要上锁的对象,若想保证具有同步效力,
* 多个线程看到的应当是相同的对象。
* 通常选取使用this即可。
* @author Administrator
*
*/
public class SyncDemo2 {
public static void main(String[] args) {
final Shop shop = new Shop();
Thread t1 = new Thread(){
public void run(){
try {
shop.buy();
} catch (Exception e) {
}
}
};
Thread t2 = new Thread(){
public void run(){
try{
shop.buy();
}catch(Exception e){
}
}
};
t1.start();
t2.start();
}
}
class Shop{
public void buy() throws Exception{
Thread t = Thread.currentThread();
System.out.println(t+"正在挑选衣服...");
Thread.sleep(5000);
synchronized (this) {
System.out.println(t+"正在试衣服...");
Thread.sleep(5000);
}
System.out.println(t+"结账离开");
}
}
运行结果:
Thread[Thread-0,5,main]正在挑选衣服...
Thread[Thread-1,5,main]正在挑选衣服...
Thread[Thread-0,5,main]正在试衣服...
Thread[Thread-0,5,main]结账离开
Thread[Thread-1,5,main]正在试衣服...
Thread[Thread-1,5,main]结账离开
同步块
最新推荐文章于 2021-12-09 19:23:14 发布