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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 一亿元的日落 初级黑马   /  2014-7-16 20:30  /  1188 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

在讲述多线程-死锁视频时,下列代码编译失败.原因是什么?

  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. }
复制代码

9 个回复

倒序浏览
你们有对象   怎么创建线程  
回复 使用道具 举报
(1)通过创建Thread类的子类对象,(2)创建线程对象。               就 是去继承Thread类    那个类的对象
回复 使用道具 举报
fantacyleo 来自手机 金牌黑马 2014-7-16 20:47:21
板凳
把完整代码和编译信息发上来,这样没头没尾的无从入手
回复 使用道具 举报
  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. }
复制代码

这是完整代码
回复 使用道具 举报
除了大括号缺一个,能编译运行啊
回复 使用道具 举报
我把你的代码复制了一下,在我这里可以运行~     你好像少加个“}”  大括号。
  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. }
复制代码



结果:
回复 使用道具 举报
tianleboy 发表于 2014-7-16 21:40
我把你的代码复制了一下,在我这里可以运行~     你好像少加个“}”  大括号。

谢谢,用eclipse的悲哀啊,一直给我提示的是主函数有问题,就没有注意上边的小细节。多谢了
回复 使用道具 举报
:L楼主,你让用editplus的童鞋怎么办
回复 使用道具 举报
真给力啊
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马