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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Johnny_Hu 中级黑马   /  2015-3-24 20:42  /  627 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  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. }//我上面定义了四个线程 为何输出时只输出一个 哪里出错了
复制代码

4 个回复

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

对对  可能数字太小了 CPU一获取其中的一个执行权后 马上就执行完了  还没来得及切换到其他的线程
回复 使用道具 举报
应该是num太小了。。。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马