线程的死锁问题
1 package com.atfu.java01; 2 3 /** 4 * 演示线程的死锁问题 5 * 1.死锁的理解:不同的线程分别占用对方需要的同步资源不放弃,都在等对方放弃自己需要的同步资源,就形成了线程的死锁 6 * 7 * 2.说明: 8 * 1)出现死锁后,不会出现异常,不会出现提示,只是所有的线程都处于阻塞状态,无法继续 9 * 2)我们使用同步时,要避免出现死锁。 10 * 11 * @author fu jingchao 12 * @creat 2021/10/18-22:46 13 */ 14 public class ThreadTest { 15 public static void main(String[] args) { 16 StringBuffer s1 = new StringBuffer(); 17 StringBuffer s2 = new StringBuffer(); 18 19 new Thread(){ 20 @Override 21 public void run() { 22 synchronized (s1){ 23 s1.append('a'); 24 s2.append('1'); 25 try { 26 Thread.sleep(100); 27 } catch (InterruptedException e) { 28 e.printStackTrace(); 29 } 30 synchronized (s2){ 31 s1.append('b'); 32 s2.append('2'); 33 System.out.println(s1); 34 System.out.println(s2); 35 } 36 } 37 } 38 }.start(); 39 40 new Thread(new Runnable() { 41 @Override 42 public void run() { 43 synchronized (s2){ 44 s1.append('c'); 45 s2.append('3'); 46 try { 47 Thread.sleep(100); 48 } catch (InterruptedException e) { 49 e.printStackTrace(); 50 } 51 synchronized (s1){ 52 s1.append('d'); 53 s2.append('4'); 54 System.out.println(s1); 55 System.out.println(s2); 56 } 57 } 58 } 59 }){ 60 }.start(); 61 62 } 63 }
此为本人学习笔记,若有错误,请不吝赐教