黑马程序员技术交流社区

标题: 多线程只输出单线程 [打印本页]

作者: Johnny_Hu    时间: 2015-3-24 20:42
标题: 多线程只输出单线程
  1. package com.Painter.Thread;

  2. public class RunnableDemo1 {

  3.         public static void main(String[] args)
  4.         {
  5.                 Test2 test2 = new Test2();
  6.                 Thread t1 = new Thread(test2);
  7.                 Thread t2 = new Thread(test2);
  8.                 Thread t3 = new Thread(test2);
  9.                 Thread t4 = new Thread(test2);
  10.                 t1.start();
  11.                 t2.start();
  12.                 t3.start();
  13.                 t4.start();
  14.         }

  15. }

  16. class Test2 implements Runnable
  17. {
  18.         private int num=100;
  19.         public void run()
  20.         {
  21.                 while (true)
  22.                 {
  23.                         if(num>0)
  24.                                 System.out.println(Thread.currentThread().getName()+"="+num--);
  25.                 }
  26.         }
  27. }//我上面定义了四个线程 为何输出时只输出一个 哪里出错了
复制代码


作者: 殷俊    时间: 2015-3-24 21:11
应该是num太小了,换成1000试试
作者: 关山明月    时间: 2015-3-24 21:14
我运行有四个线程啊,你多执行几次,或者将num设大一些,如1000,你看到只有一个线程输出那也是很可能的,因为这个线程获取到cpu执行权后直接打印完了,以致其他线程获取执行权的时候已经不满足输出条件了。
作者: Johnny_Hu    时间: 2015-3-25 09:10
关山明月 发表于 2015-3-24 21:14
我运行有四个线程啊,你多执行几次,或者将num设大一些,如1000,你看到只有一个线程输出那也是很可能的, ...

对对  可能数字太小了 CPU一获取其中的一个执行权后 马上就执行完了  还没来得及切换到其他的线程
作者: DxxD    时间: 2015-3-25 09:19
应该是num太小了。。。。




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