- 题目:请构造一个死锁程序。
package com.tl.job005.thread;
/**
* 死锁程序代码示例 原理:在处在一个多线程的环境当中,A线程拿了a资源再等待b资源,B线程拿到了b资源,正在等待获取a资源
* 此时的a,b资源均为共享资源,若不是共享资源,则不存在线程同步问题。
*
* @author zel
*
* @time:2019年3月20日
*/
public class DeadLockTest {
static class MyThread extends Thread {
private int id;
public static Object resourceA = new Object();
public static Object resourceB = new Object();
public MyThread(int id) {
this.id = id;
}
@Override
public void run() {
if (id == 1) {
synchronized (resourceA) {
System.out.println("我的id=" + this.id
+ ",我已经拿到resourceA了,即将请求resourceB!");
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
synchronized (resourceB) {
System.out.println("我的id=" + this.id
+ ",我已经拿到resourceB了,即将完成任务!");
}
}
}else if(id==2){
synchronized (resourceB) {
System.out.println("我的id=" + this.id
+ ",我已经拿到resourceB了,即将请求resourceA!");
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
synchronized (resourceA) {
System.out.println("我的id=" + this.id
+ ",我已经拿到resourceA了,即将完成任务!");
}
}
}
}
}
public static void main(String[] args) {
Thread t1=new MyThread(1);
Thread t2=new MyThread(2);
t1.start();
t2.start();
System.out.println("done!!!");
}
}
天亮教育是一家从事大数据云计算、人工智能、教育培训、产品开发、咨询服务、人才优选为一体的综合型互联网科技公司。
公司由一批BAT等一线互联网IT精英人士创建,
以"快乐工作,认真生活,打造IT职业技能教育的一面旗帜"为愿景,胸怀"让天下没有难找的工作"使命,
坚持"客户第一、诚信、激情、拥抱变化"的价值观,
全心全意为学员赋能提效,践行技术改变命运的初心。
更多学习讨论, 请加入
官方-天亮大数据交流-366784928
群二维码:
官方-天亮web前端交流-972788995
群二维码:
欢迎关注天亮教育公众号,大数据技术资料与课程、招生就业动态、教育资讯动态、创业历程分享一站式分享,官方微信公众号二维码:
天亮教育大数据官方群318971238,
天亮教育web前端官方群318971238,
爬虫、nlp技术qq群320349384
hadoop & spark & hive技术群297585251
教育培训官网:http://myhope365.com
项目研发业务尚云科技官网:http://shangyuninfo.com/
天亮教育公开课-从小白到大佬修成记-全系列视频地址:http://myhope365.com/news/index?id=66