java多线程编程(二)
1. wait 和 sleep 区别?
1.wait可以指定时间也可以不指定,sleep必须指定时间。
2.在同步中时,对cpu的执行权和锁的处理不同。
wait:释放执行权,释放锁。
sleep:释放执行权,不释放锁。
2. 多线程中的锁的概念
可以这么形象的去理解锁的概念:代码块就相当于"一扇门",如果一个人(线程)进去了这扇门(代码块),并将门锁上了,那么此时其他人就进不去了,除非这个人在里 面做完了一些事情(执行完代码块逻辑)之后将锁打开,其他人才有机会去开门-->上锁-->办事-->解锁.
最形象的例子就是 “火车上的卫生间”,哈哈
锁(synchronized)有两种使用方式:
方式一:同步代码块
synchronized(this)
{
if(num>0)
{
try{Thread.sleep(10);}//睡着了,但不释放锁,其他线程还是进不来
catch (InterruptedException e){}
System.out.println(Thread.currentThread().getName()+".....obj...."+num--);
}
}
方式二:同步函数
public synchronized void show()
{
if(num>0)
{
try{Thread.sleep(10);}catch (InterruptedException e){}
System.out.println(Thread.currentThread().getName()+".....function...."+num--);
}
}
最新文章
- Open DS
- UML大战需求分析——阅读笔记05
- ebs R12.2启动报错";failed to start a managed process after the maximum retry limit";
- 关于C语言的一些trick
- EXTJS4自学手册——EXT基本方法、属性(mixins多继承、statics、require)
- Visual Studio 2015 速递(4)——高级特性之移动开发
- 模拟Modbus协议问题
- IEnumerable和IQueryable的区别
- 用C#操作vss、msbuild、reactor
- grep恢复误删除文件内容(转)
- 工厂方法模式与IoC/DI控制反转和依赖注入
- BestCoder Round #3HDU 4907
- HTTP请求响应过程 与HTTPS区别
- Android开源框架Volley(Google IO 2013)源代码及内部实现分析
- CSS3 [attribute^=value] 选择器
- Django异常问题之Error: [WinError 10013] 以一种访问权限不允许的方式做了一个访问套接字的尝试。
- zabbix使用jmx监控tomcat
- Xamarin Essentials教程剪贴板Clipboard
- C#实现WinForm禁止最大化、最小化、双击标题栏、双击图标等操作的方法
- Excel函数之sumifs应用
热门文章
- 『无为则无心』Python函数 — 32、递归
- 安装uiautomator2 + python 自动化环境
- 学习git&;github
- 自带排序 Array.sort()
- [ SQLAlchemy ] 关于dynamic的“一知半解”
- spring cloud --- Zuul --- 心得
- 安装Apache-storm-0.9.1-incubating图解教程
- LINUX学习-Mysql安装
- vue实现引用less,sass全局变量
- XSS-lab通过教程🐶