死锁---同步
2016-04-17 23:43
344 查看
博主最近状态不佳,读者认真研究下下面的代码吧!很好理解的,祝大家都能成为一个牛逼的程序猿!
代码如下:
/**
* 造成死锁的前提是两个同步互相等待对方将锁打开,而这样恰恰造成了死循环,无法往下走(具体看代码,博主就不详解了)*/
public class DeadLock implements Runnable{
public String str="";//锁对象
static Object object1=new Object(),object2=new Object();
@Override
public void run() {
if(str.equals("one")){
System.out.println("等待对象1");
synchronized (object1) {
try {
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
synchronized (object2) {
System.out.println("对象2(object2)有没有把锁打开???");
}
}
}
if(str.equals("two")){
System.out.println("等待对象2");
synchronized (object2) {
try {
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
synchronized (object1) {
System.out.println("对象1(object1)有没有把锁打开???");
}
}
}
}
public static void main(String[] args) {
DeadLock deadLock1=new DeadLock();
DeadLock deadLock2=new DeadLock();
deadLock1.str="one";
deadLock2.str="two";
new Thread(deadLock1).start();
new Thread(deadLock2).start();
}
}
代码如下:
/**
* 造成死锁的前提是两个同步互相等待对方将锁打开,而这样恰恰造成了死循环,无法往下走(具体看代码,博主就不详解了)*/
public class DeadLock implements Runnable{
public String str="";//锁对象
static Object object1=new Object(),object2=new Object();
@Override
public void run() {
if(str.equals("one")){
System.out.println("等待对象1");
synchronized (object1) {
try {
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
synchronized (object2) {
System.out.println("对象2(object2)有没有把锁打开???");
}
}
}
if(str.equals("two")){
System.out.println("等待对象2");
synchronized (object2) {
try {
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
synchronized (object1) {
System.out.println("对象1(object1)有没有把锁打开???");
}
}
}
}
public static void main(String[] args) {
DeadLock deadLock1=new DeadLock();
DeadLock deadLock2=new DeadLock();
deadLock1.str="one";
deadLock2.str="two";
new Thread(deadLock1).start();
new Thread(deadLock2).start();
}
}
相关文章推荐
- 软工大作业·历物语(一)
- 软工大作业·历物语(一)
- 北京Uber优步司机奖励政策(4月17日)
- 学习笔记(第八周)
- 机电传动控制第八周作业
- OpenGL学习之路(二)
- Xcode中C、C++、Object-C3种语言的混编
- could not initialize proxy - no Session
- JAVA错误:The public type *** must be defined in its own file***
- View的事件体系---V3.3 弹性滑动
- bzoj2743 [HEOI2012]采花
- 总结之H3C汇聚层交换机认证在线人数展示系统
- 汪汪汪
- linux bash里的反引号和$内容替换
- HDOJ 2196 Computer
- 南京理工大学第八届程序设计大赛 A 偷吃糖果
- 深入解析Windows窗口创建和消息分发
- 滴滴快车奖励政策,高峰奖励,翻倍奖励,按成交率,指派单数分级(4月17日)
- 《Java程序设计》第6周学习总结
- 当幸福来敲门,不是影评