java多线程的同步和死锁
2016-04-01 16:03
330 查看
同步
死锁
public class SynchronizeThread extends Thread { private int number; private Object obj; public SynchronizeThread(int number, Object obj) { this.number = number; this.obj = obj; } @Override public void run() { super.run(); synchronized (obj) { for (int i = 0; i < 100; i++) { System.out.println(number + "-" + i); } } } public static void main(String args[]) { Object obj = new Object(); for (int i = 0; i < 3; i++) { new SynchronizeThread(i, obj).start(); } } }
死锁
public class DeathThread extends Thread { private int number; private Object objA; private Object objB; public DeathThread(int number, Object objA, Object objB) { this.number = number; this.objA = objA; this.objB = objB; } @Override public void run() { super.run(); synchronized (objA) { System.out.println(number + "--A"); try { sleep(1000); synchronized (objB) { System.out.println(number + "--B"); } } catch (InterruptedException e) { e.printStackTrace(); } } } public static void main(String args[]) { Object objA = new Object(); Object objB = new Object(); // 死锁 // new DeathThread(0, objA, objB).start(); // new DeathThread(1, objB, objA).start(); // 不会死锁 new DeathThread(0, objA, objB).start(); new DeathThread(1, objA, objB).start(); } }
相关文章推荐
- Java —— Hibernate4 No Session found for current thread
- java设计模式之创建型模式-工厂方法模式
- Spring中的用到的设计模式大全
- spring中用到哪些设计模式
- Java单链表基本操作(七)--排序
- java 给指定时间加上天数or给当前日期加天数
- Java中数据的简单转换
- Java中比较器 Comparator 的简单例子
- Java中比较器 Comparator 的简单例子
- Java中比较器 Comparator 的简单例子
- Java中比较器 Comparator 的简单例子
- Java中比较器 Comparator 的简单例子
- Java中比较器 Comparator 的简单例子
- Java中比较器 Comparator 的简单例子
- Java中比较器 Comparator 的简单例子
- Java中比较器 Comparator 的简单例子
- Java中比较器 Comparator 的简单例子
- springMVC4(3)方法入参灵活绑定
- Java计算程序运行时间
- JavaScrpit生日日期