ThreadDeath 理解
2024-08-22 20:29:21
public class RunnableTest2 {
public static Object obj1 = new Object();
public static Object obj2 = new Object();
private MyThread1 t1 = new MyThread1();
private MyThread2 t2 = new MyThread2();
public static void main(String[] args) {
RunnableTest2 tr = new RunnableTest2();
tr.t1.start();
tr.t2.start();
}
} class MyThread1 extends Thread {
@Override
public void run() {
System.out.println(Thread.currentThread()+"锁定了obj1,过2秒锁定obj2去");
synchronized (RunnableTest2.obj1) {
try {
Thread.sleep(2000);
synchronized (RunnableTest2.obj2) {
System.out.println("1");
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
} class MyThread2 extends Thread {
@Override
public void run() {
System.out.println(Thread.currentThread()+"锁定了obj2,过2秒锁定obj1去");
synchronized (RunnableTest2.obj2) { try {
Thread.sleep(2000);
synchronized (RunnableTest2.obj1) {
System.out.println("2");
}
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} }
}
} 打印结果:
Thread[Thread-0,5,main]锁定了obj1,过2秒锁定obj2去
Thread[Thread-1,5,main]锁定了obj2,过2秒锁定obj1去
最新文章
- dedecms升级后报错
- msyql数据库位置
- IIS网站部署注意点
- Puppet master/agent installation on RHEL7
- 翻译:Angular 2 - TypeScript 5 分钟快速入门
- memcached和redis的区别和应用场景
- 在Table的Tbody中实现滚动条滚动
- JAVA的高并发编程
- Java之线程,常用方法,线程同步,死锁
- python 函数 装饰器 内置函数
- Spring Boot 集成 Swagger,生成接口文档就这么简单!
- makefile 转载
- D. Time to go back(思维)
- Java集合源码学习(四)HashMap
- Java项目生成可执行jar包、exe文件以及在Windows下的安装文件
- 你的网站升级https了吗
- python数据分析Numpy(二)
- 【python学习-3】python数据类型
- JSP中四种传递参数中文乱码问题
- Eclipse初次java开发问题总结-3