A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  1. /*
  2. 创建一个测试类,里面有两个A类对象,然后建立两个线程,分别给线程的构造器传参数
  3. th1(sj1,sj2),th2(sj2,sj1),再创建一个测试类,然后启动两个线程
  4. */
  5. public class DieLockTest {
  6.         public static void main(String[] args) {
  7.                 ShuJu sj1=new ShuJu();
  8.                 ShuJu sj2=new ShuJu();
  9.                 Thread th1=new ThreadTest(sj1,sj2);
  10.                 Thread th2=new ThreadTest(sj2,sj1);
  11.                 th1.start();
  12.                 th2.start();
  13.                 }

  14. }
  15. //创建一个线程类,有两个属性,为A类属性,为线程类构造器传参数
  16. //重写run()方法,然后里面有一个A类的引用调用fun1(),参数为A类
  17. //对象
  18. class ThreadTest extends Thread{
  19.         private ShuJu sj1;
  20.         private ShuJu sj2;
  21.         public ThreadTest(ShuJu sj1,ShuJu sj2){
  22.                 this.sj1=sj1;
  23.                 this.sj2=sj2;
  24.         }
  25.         public void run(){
  26.                 sj1.fun1(sj2);
  27.         }
  28. }
  29. //定义一个数据类,里面有两个同步方法,为了实现死锁,让一个方法的参数为本类类型
  30. //然后为了使效果明显一些,我们使线程sleep一会

  31. class ShuJu{
  32.         public synchronized void fun1(ShuJu sj){
  33.                 String str=Thread.currentThread().getName();
  34.                 System.out.println(str+"  "+"準備死鎖");
  35.                 try {
  36.                         Thread.sleep(1000);
  37.                 } catch (InterruptedException e) {
  38.                        
  39.                 }
  40.                 sj.fun2();
  41.                
  42.         }
  43.         public synchronized void fun2(){}
  44. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1 神马都是浮云

查看全部评分

1 个回复

正序浏览
值得学习ing!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马