Java——同步监视器

package day04;
/**
 * 有效的缩小同步范围可以在保证并发安全的前提下尽可
 * 能提高并发效率。
 * 
 * 同步块可以更准确的控制需要同步运行的代码片段。
 * synchronized(同步监视器) {
 * 		需要同步运行的代码片段
 * }
 * 
 * 同步监视器是java中任意的一个对象,只要保证多个线程
 * 看到的该对象是“同一个”,即可保证同步块中的代码是并发安全的。
 * @author Administrator
 *
 */
public class SyncDemo2 {
	public static void main(String[] args) {
		final Shop shop = new Shop();
		Thread t1 = new Thread() {
			public void run() {
				shop.buy();
			}
		};
		Thread t2 = new Thread() {
			public void run() {
				shop.buy();
			}
		};
		t1.start();
		t2.start();
	}
}	

package day04;

public class Shop {

	public void buy() {
		Thread t = Thread.currentThread();
		try{
			System.out.println(
					t.getName()+":正在挑衣服...");
			Thread.sleep(5000);
			synchronized(this) {
				System.out.println(
						t.getName()+":正在试衣服...");
						Thread.sleep(5000);
			}
			System.out.println(
					t.getName()+":结账离开.");
		}catch(Exception e) {
			e.printStackTrace();
		}		
	}
}

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Performer_Cherry

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值