[Java] 一个java线程死锁的例子 →→→→→进入此内容的聊天室

来自 , 2021-04-13, 写在 Java, 查看 123 次.
URL http://www.code666.cn/view/a733fa9b
  1. /**
  2.  * 一个线程死锁的例子
  3.  */
  4. public class DeadLock {
  5.         public static void main(String[] args) {
  6.                 // 2个资源
  7.                 final Object resource1 = "resource1";
  8.                 final Object resource2 = "resource2";
  9.                 // 第一个线程,想先占有resource1,再尝试着占有resource2
  10.                 Thread t1 = new Thread() {
  11.                         public void run() {
  12.                                 // 尝试占有了resource1
  13.                                 synchronized (resource1) {
  14.                                         // 成功占有resource1
  15.                                         System.out.println("Thread 1: locked resource 1");
  16.                                         // 休眠一段时间
  17.                                         try {
  18.                                                 Thread.sleep(50);
  19.                                         } catch (InterruptedException e) {
  20.                                         }
  21.                                         // 尝试着占有resource2,如果不能占有,该线程会一直等待
  22.                                         synchronized (resource2) {
  23.                                                 System.out.println("Thread 1: locked resource 2");
  24.                                         }
  25.                                 }
  26.                         }
  27.                 };
  28.  
  29.                 // 第二个线程,想先占有resource2,再占有resource1
  30.                 Thread t2 = new Thread() {
  31.                         public void run() {
  32.                                 // 尝试着占有resource2
  33.                                 synchronized (resource2) {
  34.                                         // 成功占有resource2
  35.                                         System.out.println("Thread 2: locked resource 2");
  36.                                         // 休眠一段时间
  37.                                         try {
  38.                                                 Thread.sleep(50);
  39.                                         } catch (InterruptedException e) {
  40.                                         }
  41.                                         // 尝试占有resource1,如果不能占有,该线程会一直等待
  42.                                         synchronized (resource1) {
  43.                                                 System.out.println("Thread 2: locked resource 1");
  44.                                         }
  45.                                 }
  46.                         }
  47.                 };
  48.                 // 启动两个线程
  49.                 t1.start();
  50.                 t2.start();
  51.         }
  52. }
  53.  

回复 "一个java线程死锁的例子"

这儿你可以回复上面这条便签

captcha