package seday10;

import seday03.Test2;

/**
* @author xingsir
* 同步块:synchronized(同步监视器对象){需要同步运行的代码片段}
* 同步块可以更准确的控制需要同步运行的代码片段,有效的缩小同步范围可以保证并发安全的前提下尽可能的提高并发 的效率。
*/
public class syncDemo2 {

public static void main(String[] args) {
Eat eat =new Eat();//实例化一个对象eat
Thread t1=new Thread() {//创建线程一
public void run() {
eat.order();//调用
}
};
Thread t2=new Thread() {//创建线程二一
public void run() {
eat.order();//调用
}
};
t1.start();//线程调用
t2.start();//线程调用
}
}

/*
* 若不使用,synchronized (this) {},结果如下:
Thread-1:开始浏览菜单。。。。。
Thread-0:开始浏览菜单。。。。。
Thread-1:服务员点餐...
Thread-0:服务员点餐...
Thread-1:上菜开吃!
Thread-0:上菜开吃!
假设就一个服务员的话,就存在问题
*/

/*使用,synchronized (this) {}。执行结果:可以看出线程Thread-1处理完后Thread-0才开始处理
Thread-1:开始浏览菜单。。。。。
Thread-0:开始浏览菜单。。。。。
Thread-1:服务员点餐...
Thread-1:上菜开吃!
Thread-0:服务员点餐...
Thread-0:上菜开吃!

*/

class Eat{
public void order() {
Thread thread=Thread.currentThread();//主进程
try {
System.out.println(thread.getName()+":开始浏览菜单。。。。。");
Thread.sleep(5000);//阻塞5000毫秒
//服务员就一个点餐需要排队,所以
synchronized (this) {//this为同步监视器对象,所以需要同步运行的代码片段
System.out.println(thread.getName()+":服务员点餐...");//打印出线程名字
Thread.sleep(5000);//阻塞5000毫秒
}
System.out.println(thread.getName()+":上菜开吃!");//打印出线程名字
} catch (Exception e) {
e.printStackTrace();
}
}

}

最新文章

  1. ThinkPHP Where 条件中使用表达式
  2. 如何让PowerShell显示中文不乱码
  3. java读取excel文件
  4. Hello Spring Framework——依赖注入(DI)与控制翻转(IoC)
  5. OC中面向对象2
  6. Android内存进程管理机制
  7. awk脚本
  8. CST和GMT时间的区别
  9. [改善Java代码]枚举和注解结合使用威力更大
  10. [bzoj\lydsy\大视野在线测评]题解(持续更新)
  11. java实现url转码、解码
  12. js判断字符串是否包含指定的字符
  13. zabbix如何选择适合的监控类型(107)
  14. iOS开发之OC篇-响应式编程Reactive Cocoa
  15. java--String常量池问题的几个例子
  16. 杭电OJ_DIY_YTW2_1001 A Mathematical Curiosity
  17. 输入和输出--IO流
  18. eval及json的理解
  19. Elasticsearch+Hbase实现海量数据秒回查询
  20. OpenCV 金字塔图像缩放

热门文章

  1. python基础(1):第一个python程序的编写
  2. 机器学习作业(七)非监督学习——Matlab实现
  3. .net Core 配置Centos守护进程Supervisor
  4. npm 升级到最新版本
  5. gulp安装报错Local version: Unknown
  6. 更新了svn 后,某个文件多了几个副本如:xxx.r1 xxx.r3 xxx.mine等,正常文件名xxx
  7. 158.Clickjacking点击劫持攻击实现和防御措施
  8. Three.js的开始(附代码)_2
  9. mybatis一对多 多对一 多对多
  10. 2019-08-12 纪中NOIP模拟B组