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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 咕咕猫 中级黑马   /  2013-9-21 17:12  /  3000 人查看  /  10 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 咕咕猫 于 2013-9-21 17:57 编辑

class Test implements Runnable
{
private int tick =100;
Object obj = new Object();
public void run()
{
  while (tick>0)
  {
   synchronized(obj)//同步代码块
   {
    if(tick>0)
    {
     try//休眠10毫秒
     {
      Thread.sleep(10);
     }
     catch (Exception e)
     {
     }
     System.out.println(Thread.currentThread().getName()+":"+tick);
     tick--;
    }
   }
  }
}
}
class Demo
{
public static void main(String[] args)
{
  Test t = new Test();
  Thread t1 = new Thread(t);//创建两个线程
  Thread t2 = new Thread(t);
  t1.start();
  t2.start();
}
}
为什么我运行的结果都是线程Thread-0在运行呢 试了N次都是 这个按理来说不应该吧 求指教

评分

参与人数 1技术分 +1 收起 理由
EYE_SEE_YOU + 1

查看全部评分

10 个回复

倒序浏览
本帖最后由 路边小色狼 于 2013-9-21 17:36 编辑
  1. class Test implements Runnable
  2. {
  3. private int tick =100;
  4. Object obj = new Object();
  5. public void run()
  6. {
  7.   while (tick>0)
  8.   {

  9.     if(tick>0)
  10.     {
  11.      try//休眠10毫秒
  12.      {
  13.       Thread.sleep(10);
  14.      }
  15.      catch (Exception e)
  16.      {
  17.      }
  18.      System.out.println(Thread.currentThread().getName()+":"+tick);
  19.      tick--;
  20.     }

  21.   }
  22. }
  23. }
  24. class meiju
  25. {
  26. public static void main(String[] args)
  27. {
  28.   Test t = new Test();
  29.   Thread t1 = new Thread(t);//创建两个线程
  30.   Thread t2 = new Thread(t);
  31.   t1.start();
  32.   t2.start();
  33. }
  34. }
复制代码
你锁住了当然只能走一个线程。你把锁去掉不就好了
你是不是想问为什么都是线程 0在走啊,。线程1也会走的,你多试几次,我有试过

评分

参与人数 1技术分 +1 收起 理由
EYE_SEE_YOU + 1

查看全部评分

回复 使用道具 举报
我调试好像没有啥大问题啊,只是你运行多次就出来了
每次结果都不一样。
  1. class Test implements Runnable {
  2.         private int tick =100;
  3.         Object obj = new Object();
  4.         public void run(){
  5.                 while(tick>0){
  6.                         synchronized(obj){
  7.                                 if (tick>0) {
  8.                                         try {
  9.                                                 Thread.sleep(10);
  10.                                         }
  11.                                         catch (Exception e) {
  12.                                         }
  13.                                         System.out.println(Thread.currentThread().getName()+":"+tick);
  14.                                         tick--;
  15.                                 }
  16.                         }
  17.                
  18.                 }
  19.         }
  20. }
  21. class Demo {
  22.         public static void main(String[] args){
  23.                 Test t = new Test();

  24.                 Thread t1 = new Thread(t);
  25.                 Thread t2 = new Thread(t);
  26.                 t1.start();
  27.                 t2.start();
  28.         }
  29. }
复制代码
回复 使用道具 举报
路边小色狼 发表于 2013-9-21 17:33
你锁住了当然只能走一个线程。你把锁去掉不就好了
你是不是想问为什么都是线程 0在走啊,。线程1也会走的, ...

这个锁的位置应该不会影响交替运行的吧 我试了好多次都是线程0在运行 没出现过线程1运行的情况
回复 使用道具 举报
本帖最后由 咕咕猫 于 2013-9-21 17:54 编辑
(0.0)’ 发表于 2013-9-21 17:34
我调试好像没有啥大问题啊,只是你运行多次就出来了
每次结果都不一样。 ...

你运行的时候是两个线程都运行了吗 为什么我试了好多次都只是同一个线程0运行 1线程运行情况都没出现过  人品不会这么差吧

回复 使用道具 举报
  1. Thread-0:100
  2. Thread-0:99
  3. Thread-0:98
  4. Thread-0:97
  5. Thread-0:96
  6. Thread-0:95
  7. Thread-0:94
  8. Thread-0:93
  9. Thread-0:92
  10. Thread-0:91
  11. Thread-0:90
  12. Thread-0:89
  13. Thread-0:88
  14. Thread-0:87
  15. Thread-0:86
  16. Thread-0:85
  17. Thread-0:84
  18. Thread-0:83
  19. Thread-0:82
  20. Thread-0:81
  21. Thread-0:80
  22. Thread-0:79
  23. Thread-1:78
  24. Thread-1:77
  25. Thread-1:76
  26. Thread-1:75
  27. Thread-1:74
  28. Thread-1:73
  29. Thread-1:72
  30. Thread-1:71
  31. Thread-1:70
  32. Thread-1:69
  33. Thread-1:68
  34. Thread-1:67
  35. Thread-1:66
  36. Thread-1:65
  37. Thread-1:64
  38. Thread-0:63
  39. Thread-0:62
  40. Thread-0:61
  41. Thread-0:60
  42. Thread-0:59
  43. Thread-0:58
  44. Thread-0:57
  45. Thread-0:56
  46. Thread-0:55
  47. Thread-0:54
  48. Thread-0:53
  49. Thread-0:52
  50. Thread-0:51
  51. Thread-0:50
  52. Thread-0:49
  53. Thread-0:48
  54. Thread-0:47
  55. Thread-0:46
  56. Thread-0:45
  57. Thread-0:44
  58. Thread-0:43
  59. Thread-0:42
  60. Thread-0:41
  61. Thread-0:40
  62. Thread-0:39
  63. Thread-0:38
  64. Thread-0:37
  65. Thread-0:36
  66. Thread-0:35
  67. Thread-0:34
  68. Thread-0:33
  69. Thread-0:32
  70. Thread-0:31
  71. Thread-0:30
  72. Thread-0:29
  73. Thread-0:28
  74. Thread-0:27
  75. Thread-0:26
  76. Thread-0:25
  77. Thread-0:24
  78. Thread-0:23
  79. Thread-0:22
  80. Thread-0:21
  81. Thread-0:20
  82. Thread-0:19
  83. Thread-0:18
  84. Thread-0:17
  85. Thread-0:16
  86. Thread-0:15
  87. Thread-0:14
  88. Thread-0:13
  89. Thread-0:12
  90. Thread-0:11
  91. Thread-0:10
  92. Thread-0:9
  93. Thread-0:8
  94. Thread-0:7
  95. Thread-0:6
  96. Thread-0:5
  97. Thread-0:4
  98. Thread-0:3
  99. Thread-0:2
  100. Thread-0:1
复制代码
没发现有什么问题呀,你多运行几次看看,我复制你的代码运行如下,(cpu分配资源是不规则的)
回复 使用道具 举报
简单ai... 发表于 2013-9-21 17:54
没发现有什么问题呀,你多运行几次看看,我复制你的代码运行如下,(cpu分配资源是不规则的) ...

看来真是人品问题啊
Thread-0:90
Thread-0:89
Thread-0:88
Thread-0:87
Thread-0:86
Thread-0:85
Thread-0:84
Thread-0:83
Thread-0:82
Thread-0:81
Thread-0:80
Thread-0:79
Thread-0:78
Thread-0:77
Thread-0:76
Thread-0:75
Thread-0:74
Thread-0:73
Thread-0:72
Thread-0:71
Thread-0:70
Thread-0:69
Thread-0:68
Thread-0:67
Thread-0:66
Thread-0:65
Thread-0:64
Thread-0:63
Thread-0:62
Thread-0:61
Thread-0:60
Thread-0:59
Thread-0:58
Thread-0:57
Thread-0:56
Thread-0:55
Thread-0:54
Thread-0:53
Thread-0:52
Thread-0:51
Thread-0:50
Thread-0:49
Thread-0:48
Thread-0:47
Thread-0:46
Thread-0:45
Thread-0:44
Thread-0:43
Thread-0:42
Thread-0:41
Thread-0:40
Thread-0:39
Thread-0:38
Thread-0:37
Thread-0:36
Thread-0:35
Thread-0:34
Thread-0:33
Thread-0:32
Thread-0:31
Thread-0:30
Thread-0:29
Thread-0:28
Thread-0:27
Thread-0:26
Thread-0:25
Thread-0:24
Thread-0:23
Thread-0:22
Thread-0:21
Thread-0:20
Thread-0:19
Thread-0:18
Thread-0:17
Thread-0:16
Thread-0:15
Thread-0:14
Thread-0:13
Thread-0:12
Thread-0:11
Thread-0:10
Thread-0:9
Thread-0:8
Thread-0:7
Thread-0:6
Thread-0:5
Thread-0:4
Thread-0:3
Thread-0:2
Thread-0:1
E:\abc>java Demo
Thread-0:100
Thread-0:99
Thread-0:98
Thread-0:97
Thread-0:96
Thread-0:95
Thread-0:94
Thread-0:93
Thread-0:92
Thread-0:91
Thread-0:90
Thread-0:89
Thread-0:88
Thread-0:87
Thread-0:86
Thread-0:85
Thread-0:84
Thread-0:83
Thread-0:82
Thread-0:81
Thread-0:80
Thread-0:79
Thread-0:78
Thread-0:77
Thread-0:76
Thread-0:75
Thread-0:74
Thread-0:73
Thread-0:72
Thread-0:71
Thread-0:70
Thread-0:69
Thread-0:68
Thread-0:67
Thread-0:66
Thread-0:65
Thread-0:64
Thread-0:63
Thread-0:62
Thread-0:61
Thread-0:60
Thread-0:59
Thread-0:58
Thread-0:57
Thread-0:56
Thread-0:55
Thread-0:54
Thread-0:53
Thread-0:52
Thread-0:51
Thread-0:50
Thread-0:49
Thread-0:48
Thread-0:47
Thread-0:46
Thread-0:45
Thread-0:44
Thread-0:43
Thread-0:42
Thread-0:41
Thread-0:40
Thread-0:39
Thread-0:38
Thread-0:37
Thread-0:36
Thread-0:35
Thread-0:34
Thread-0:33
Thread-0:32
Thread-0:31
Thread-0:30
Thread-0:29
Thread-0:28
Thread-0:27
Thread-0:26
Thread-0:25
Thread-0:24
Thread-0:23
Thread-0:22
Thread-0:21
Thread-0:20
Thread-0:19
Thread-0:18
Thread-0:17
Thread-0:16
Thread-0:15
Thread-0:14
Thread-0:13
Thread-0:12
Thread-0:11
Thread-0:10
Thread-0:9
Thread-0:8
Thread-0:7
Thread-0:6
Thread-0:5
Thread-0:4
Thread-0:3
Thread-0:2
Thread-0:1
E:\abc>javac 18.java
E:\abc>javac 18.java
E:\abc>java Demo
Thread-0:100
Thread-0:99
Thread-0:98
Thread-0:97
Thread-0:96
Thread-0:95
Thread-0:94
Thread-0:93
Thread-0:92
Thread-0:91
Thread-0:90
Thread-0:89
Thread-0:88
Thread-0:87
Thread-0:86
Thread-0:85
Thread-0:84
Thread-0:83
Thread-0:82
Thread-0:81
Thread-0:80
Thread-0:79
Thread-0:78
Thread-0:77
Thread-0:76
Thread-0:75
Thread-0:74
Thread-0:73
Thread-0:72
Thread-0:71
Thread-0:70
Thread-0:69
Thread-0:68
Thread-0:67
Thread-0:66
Thread-0:65
Thread-0:64
Thread-0:63
Thread-0:62
Thread-0:61
Thread-0:60
Thread-0:59
Thread-0:58
Thread-0:57
Thread-0:56
Thread-0:55
Thread-0:54
Thread-0:53
Thread-0:52
Thread-0:51
Thread-0:50
Thread-0:49
Thread-0:48
Thread-0:47
Thread-0:46
Thread-0:45
Thread-0:44
Thread-0:43
Thread-0:42
Thread-0:41
Thread-0:40
Thread-0:39
Thread-0:38
Thread-0:37
Thread-0:36
Thread-0:35
Thread-0:34
Thread-0:33
Thread-0:32
Thread-0:31
Thread-0:30
Thread-0:29
Thread-0:28
Thread-0:27
Thread-0:26
Thread-0:25
Thread-0:24
Thread-0:23
Thread-0:22
Thread-0:21
Thread-0:20
Thread-0:19
Thread-0:18
Thread-0:17
Thread-0:16
Thread-0:15
Thread-0:14
Thread-0:13
Thread-0:12
Thread-0:11
Thread-0:10
Thread-0:9
Thread-0:8
Thread-0:7
Thread-0:6
Thread-0:5
Thread-0:4
Thread-0:3
Thread-0:2
Thread-0:1
E:\abc>
回复 使用道具 举报
咕咕猫 发表于 2013-9-21 17:53
你运行的时候是两个线程都运行了吗 为什么我试了好多次都只是同一个线程0运行 1线程运行情况都没出现过   ...

哈哈,是这样的,你多运行N次,就想老毕说的一句话,你就当本年度最悲惨线程就是那个没出现的问题了。
回复 使用道具 举报
你可以换个版本eclipse测试,或者配置不同的jar包试试,我测试是通过的,完全复制你的代码,就改了下类名
回复 使用道具 举报
带没问题,因为你只运行了100次,对于高速运行的cpu,100次可能也就在一个时间片里就运行完了,你改成运行1000,10000次或者更多试试。
回复 使用道具 举报
tick改成10000慢慢跑,最悲惨线程也有登场机会
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马