Java死锁
来源:互联网 发布:金融大数据研究院 编辑:程序博客网 时间:2024/05/16 15:10
开始写了一篇,写错了位置,显示的是乱码,现在重新来写:
先理解死锁:两个Thread或更多的Thread,都占用相同的行为,那么就要等待其他的用完了才能用,就像有两个人甲乙,甲在看报,而乙在玩游戏,那么甲就等着乙玩完了游戏后玩游戏(此刻甲还在看报),而已等着甲看完报后再看报(此刻已还在玩游戏),于是就这样僵持着,这就是死锁,互相等待着对方把事情做完。。。
现在看死锁代码:
class Zhangsan {
public void say(){
System.out.println("张三对李四说:“你给我画,我就把书给你“");
}
public void get(){
System.out.println("张三得到画了");
}
}
class Lisi {
public void say(){
System.out.println("李四对张三说:”你给我书,我就把画给你”");
}
public void get(){
System.out.println("李四得到书了");
}
}
public class ThreaDeadLock implements Runnable{
private static Zhangsan zs=new Zhangsan();
private static Lisi ls=new Lisi();
private boolean flag=false;
public void run(){
if(flag){
synchronized(zs){
zs.say();
try{
Thread.sleep(500);
}
catch(InterruptedException e){
e.printStackTrace();
}
synchronized(ls){
zs.get();
}
}
}else{
synchronized(ls){
ls.say();
try{
Thread.sleep(500);
}catch(InterruptedException e){
e.printStackTrace();
}
synchronized(zs){
ls.get();
}
}
}
}
public static void main(String[] args){
ThreaDeadLock t1=new ThreaDeadLock();
ThreaDeadLock t2=new ThreaDeadLock();
t1.flag=true;
t2.flag=false;
Thread thA=new Thread(t1);
Thread thB=new Thread(t2);
thA.start();
thB.start();
}
}
------------------------------------------------------------------------------
更改run就解锁了:
public void run(){
if(flag){
synchronized(zs){
zs.say();
try{
Thread.sleep(500);
}
catch(InterruptedException e){
e.printStackTrace();
}
}
synchronized(ls){
zs.get();
}
}else{
synchronized(ls){
ls.say();
try{
Thread.sleep(500);
}catch(InterruptedException e){
e.printStackTrace();
}
}
synchronized(zs){
ls.get();
}
}
- java死锁,避免死锁
- Java.死锁
- Java死锁
- java死锁
- java ----死锁
- Java死锁
- java 死锁
- Java - 死锁
- java 死锁
- JAVA 死锁
- java死锁
- java死锁
- Java死锁
- Java - 死锁
- Java 死锁
- java 死锁
- java死锁
- Java死锁
- linux启动流程分析(2)---内核启动地址的确定
- JavaScript三种弹出对话框
- decode和NVL2区别
- STM8固件库+IAR 之--UART3
- linux启动流程分析(3)---内核解压缩过程
- Java死锁
- JQuery实现全选全不选效果
- linux启动流程分析(4)
- 反射
- 用Autoit进行简单的桌面操作
- 2.Cairo图形库-定义
- linux中安装LAMP以及环境配置,疑难解决
- 注解
- JQuery实现动态输入提示小示例