网站建设国标行业分类,地图网站模板,网站好友邀请链接生成 php,海口网站制作1 package com.demo.bingfa;2 3 /**4 * java并发编程中#xff0c;死锁的概念5 *6 * 我们启用了两个线程#xff0c;分别抢占2个资源#xff0c;但这两个资源又分别被不同的对象#xff08;字符串#xff09;锁住了。7 * 当第一个线程调用 resource1 方法#xff0c;… 1 package com.demo.bingfa;2 3 /**4 * java并发编程中死锁的概念5 *6 * 我们启用了两个线程分别抢占2个资源但这两个资源又分别被不同的对象字符串锁住了。7 * 当第一个线程调用 resource1 方法进入同步块拿到锁并等待 1 秒钟让另一个线程进入8 * resource2 同步块当第二个线程进入同步块后注意此时 拿着 resourec1 锁的线程企9 * 图拿到 resource2 的锁但这个时候拿着 resource2 的线程也想去拿 resource1 的锁。于
10 * 是就出现了互相僵持的情况谁也无法拿到对方的锁整个系统就卡死了。
11 */
12 public class DeadLock {
13 public static void main(String[] args) {
14 //lambda表达式
15 //启动一个线程去获取资源1。
16 Thread thread1 new Thread(() - {
17 try {
18 new DeadLock().resource1();
19 } catch (InterruptedException e) {
20 e.printStackTrace();
21 }
22 });
23 thread1.setName(线程1);
24 thread1.start();
25
26 //启动另一个线程去获取资源2.
27 Thread thread2 new Thread(() - {
28 try {
29 new DeadLock().resource2();
30 } catch (InterruptedException e) {
31 e.printStackTrace();
32 }
33 });
34 thread2.setName(线程2);
35 thread2.start();
36 }
37
38 void resource1() throws InterruptedException{
39 synchronized (resource1){
40 System.out.println(获取资源1);
41 //等待1秒让另外一个线程获取资源
42 Thread.sleep(1 * 1000);
43 resource2();
44 }
45 }
46
47 void resource2() throws InterruptedException{
48 synchronized (resource2){
49 System.out.println(获取资源2);
50 //等待1秒让另外一个线程获取资源
51 Thread.sleep(1 * 1000);
52 resource1();
53 }
54 }
55 } 我们以后在线上的话怎么去查找线程死锁的问题呢 1jps命令。线程号类名 2:jstack 打印进程栈的信息 转载于:https://www.cnblogs.com/bulrush/p/10766929.html