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去

最新文章

  1. dedecms升级后报错
  2. msyql数据库位置
  3. IIS网站部署注意点
  4. Puppet master/agent installation on RHEL7
  5. 翻译:Angular 2 - TypeScript 5 分钟快速入门
  6. memcached和redis的区别和应用场景
  7. 在Table的Tbody中实现滚动条滚动
  8. JAVA的高并发编程
  9. Java之线程,常用方法,线程同步,死锁
  10. python 函数 装饰器 内置函数
  11. Spring Boot 集成 Swagger,生成接口文档就这么简单!
  12. makefile 转载
  13. D. Time to go back(思维)
  14. Java集合源码学习(四)HashMap
  15. Java项目生成可执行jar包、exe文件以及在Windows下的安装文件
  16. 你的网站升级https了吗
  17. python数据分析Numpy(二)
  18. 【python学习-3】python数据类型
  19. JSP中四种传递参数中文乱码问题
  20. Eclipse初次java开发问题总结-3

热门文章

  1. db2快照
  2. outline详解
  3. centos cgroup配置
  4. mac下cordova的ios-deploy安装问题
  5. Spring ApplicationListener 理解
  6. panda2
  7. model 数据注解
  8. MySQL的登陆错误:ERROR 1049 (42000): Unknown database 'root'
  9. struts.xml中的配置常量的含义
  10. IOS-涂鸦