Java线程死锁的简单例子

阳光穿透心脏的1/2处 2022-06-18 08:45 273阅读 0赞
  1. /** * DeadLockDemo * * @author panjn * @date 2017/4/1 */
  2. public class DeadLockDemo {
  3. private static String A="A";
  4. private static String B="B";
  5. private void deadLock() {
  6. Thread t1 = new Thread(new Runnable() {
  7. @Override
  8. public void run() {
  9. synchronized (A) {
  10. try {
  11. Thread.sleep(2000);
  12. } catch (InterruptedException e) {
  13. e.printStackTrace();
  14. }
  15. synchronized (B) {
  16. System.out.println("1");
  17. }
  18. }
  19. }
  20. });
  21. Thread t2 = new Thread(new Runnable() {
  22. @Override
  23. public void run() {
  24. synchronized (B) {
  25. try {
  26. Thread.sleep(2000);
  27. } catch (InterruptedException e) {
  28. e.printStackTrace();
  29. }
  30. synchronized (A) {
  31. System.out.println("2");
  32. }
  33. }
  34. }
  35. });
  36. t1.start();
  37. t2.start();
  38. }
  39. public static void main(String[] args) {
  40. new DeadLockDemo().deadLock();
  41. }
  42. }

发表评论

表情:
评论列表 (有 0 条评论,273人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Java线

    需要避免的与多任务处理有关的特殊错误类型是死锁(deadlock)。死锁发生在当两个线程对一对同步对象有循环依赖关系时。例如,假定一个线程进入了对象X的管程而另一个线程进入了对

    相关 Java简单例子

    死锁是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。 简单来说: 1. 线程1和线程2的执行逻