黑马程序员技术交流社区

标题: 关于多线程的一个小疑问 [打印本页]

作者: tonygone    时间: 2013-7-17 14:22
标题: 关于多线程的一个小疑问
本帖最后由 tonygone 于 2013-7-18 08:09 编辑
  1. public class Runner2 implements Runnable {
  2.     public void run() {
  3.         try {
  4.             for (int i = 0; i < 30; i++) {
  5.                 System.out.println(i);
  6.                 Thread.sleep(1000);
  7.             }
  8.         } catch (InterruptedException ex) {
  9.              System.out.println("线程被中断");
  10.             return;
  11.         }
  12.     }
  13. }
  14. public class TestInterupt {
  15.     public static void main(String[] args) {
  16.         Runner2 runner2 = new Runner2();
  17.         Thread t = new Thread(runner2);
  18.         t.start();
  19.         try {
  20.             Thread.sleep(10000);
  21.              t.interrupt();
  22.         } catch (InterruptedException ex) {
  23.             System.out.println("主线程被中断");
  24.         }
  25.     }
  26. }
复制代码
我编译并执行TestInterup输出的结果是
0
1
2
3
4
5
6
7
8
9

可是我之后将Runner2类进行改写,代码如下:
  1. public class Runner2 implements Runnable {
  2.     public void run() {
  3.         try {
  4.             for (int i = 0; i < 30; i++) {
  5.                 Thread.sleep(1000);
  6.                 System.out.println(i);
  7.             }
  8.         } catch (InterruptedException ex) {
  9.              System.out.println("线程被中断");
  10.             return;
  11.         }
  12.     }
  13. }
复制代码
为什么我再次编译执行TestInterup类,其输出的结果却是:
0
1
2
3
4
5
6
7
8

为什么这次没有输出9呢?
作者: Candy    时间: 2013-7-17 15:17
我很疑惑
作者: tonygone    时间: 2013-7-17 15:55
liukunaitasa 发表于 2013-7-17 15:00
楼主怎么编译通过的。两个public类

我没有放在一个java文件里:#
作者: 一木榜公    时间: 2013-7-17 17:37
本帖最后由 一木榜公 于 2013-7-17 17:38 编辑

main线程中:Thread.sleep(10000);         t线程中:Thread.sleep(1000);

main线程执行到sleep,睡的时间是 t线程的10倍,也就是t线程能执行10次循环,然后中断。所以修改前你输出的是10个数。

   1  2   3   4   5   6   7   8   9    10   (睡的次数)
0   1   2   3    4   5   6   7   8   9  中断了

修改后是线程先睡,
1   2   3   4   5   6   7   8   9   10   睡的次数
0    1   2   3    4   5   6   7   8     中断了
作者: 滔哥    时间: 2013-7-17 17:43
如果同学已经解决问题 请修改问题为已解决。
作者: 赵海洋    时间: 2013-7-17 17:59
路过,瞅瞅~~~




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