黑马程序员技术交流社区

标题: 多线程-死锁 [打印本页]

作者: 一亿元的日落    时间: 2014-7-16 20:30
标题: 多线程-死锁
在讲述多线程-死锁视频时,下列代码编译失败.原因是什么?

  1. public class DeadLockTest{

  2.         public static void main(String[] args){
  3.                 Thread t1 = new Thread(new Test1(true));
  4.                 Thread t2 = new Thread(new Test1(false));
  5.                 t1.start();
  6.                 t2.start();
  7.         }
  8. }
复制代码

作者: java—family    时间: 2014-7-16 20:37
你们有对象   怎么创建线程  
作者: java—family    时间: 2014-7-16 20:40
(1)通过创建Thread类的子类对象,(2)创建线程对象。               就 是去继承Thread类    那个类的对象
作者: fantacyleo    时间: 2014-7-16 20:47
把完整代码和编译信息发上来,这样没头没尾的无从入手
作者: 一亿元的日落    时间: 2014-7-16 20:54
  1. class Test1 implements Runnable{
  2.         private boolean flag;
  3.         Test1(boolean flag){
  4.                 this.flag = flag;
  5.         }
  6.         public void run(){
  7.                 if(flag){
  8.                         synchronized(MyLock.locka){
  9.                                 System.out.println("if locka");
  10.                                 synchronized(MyLock.lockb){
  11.                                         System.out.println("if lockb");
  12.                                 }
  13.                         }
  14.                 }else{       
  15.                         synchronized(MyLock.lockb){
  16.                                 System.out.println("else lockb");
  17.                                 synchronized(MyLock.locka){
  18.                                         System.out.println("else locka");
  19.                                 }
  20.                         }
  21.         }
  22. }

  23. class MyLock{
  24.         static Object locka = new Object();
  25.         static Object lockb = new Object();
  26. }

  27. public class DeadLockTest{

  28.         public static void main(String[] args){
  29.                 Thread t1 = new Thread(new Test1(true));
  30.                 Thread t2 = new Thread(new Test1(false));
  31.                 t1.start();
  32.                 t2.start();
  33.         }
  34. }
复制代码

这是完整代码
作者: qingxi1    时间: 2014-7-16 21:29
除了大括号缺一个,能编译运行啊
作者: tianleboy    时间: 2014-7-16 21:40
我把你的代码复制了一下,在我这里可以运行~     你好像少加个“}”  大括号。
  1. class Test1 implements Runnable{
  2.         private boolean flag;
  3.         Test1(boolean flag){
  4.                 this.flag = flag;
  5.         }

  6.         public void run(){
  7.                 if(flag){
  8.                         synchronized(MyLock.locka){
  9.                                 System.out.println("if locka");
  10.                                 synchronized(MyLock.lockb){
  11.                                         System.out.println("if lockb");
  12.                                 }
  13.                         }
  14.                 }else{        
  15.                         synchronized(MyLock.lockb){
  16.                                 System.out.println("else lockb");
  17.                                 synchronized(MyLock.locka){
  18.                                         System.out.println("else locka");
  19.                                 }
  20.                         }
  21.                 }   
  22.         }
  23. }

  24. class MyLock{
  25.         static Object locka = new Object();
  26.         static Object lockb = new Object();
  27. }

  28. public class test{

  29.         public static void main(String[] args){
  30.                 Thread t1 = new Thread(new Test1(true));
  31.                 Thread t2 = new Thread(new Test1(false));
  32.                 t1.start();
  33.                 t2.start();
  34.         }
  35. }
复制代码



结果:

作者: 一亿元的日落    时间: 2014-7-17 16:43
tianleboy 发表于 2014-7-16 21:40
我把你的代码复制了一下,在我这里可以运行~     你好像少加个“}”  大括号。

谢谢,用eclipse的悲哀啊,一直给我提示的是主函数有问题,就没有注意上边的小细节。多谢了
作者: 人心如水    时间: 2014-7-17 16:51
:L楼主,你让用editplus的童鞋怎么办
作者: 淡淡柠檬茶    时间: 2014-7-17 18:44
真给力啊




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2