黑马程序员技术交流社区

标题: 多线程 Thread CS Runnable 之效率问题 ? [打印本页]

作者: 騛鹏    时间: 2013-3-17 15:43
标题: 多线程 Thread CS Runnable 之效率问题 ?
本帖最后由 騛鹏 于 2013-3-18 09:16 编辑
  1. class Test extends Thread
  2. {
  3.         Test(String name)
  4.         {
  5.                 super(name);
  6.         }
  7.         public void run()
  8.         {
  9.                 for (int x=0; x<60; x++)
  10.                 {
  11.                         System.out.println(this.getName()+" run..."+x);
  12.                 }
  13.         }
  14. }
  15. class  ThreadTest
  16. {
  17.         public static void main(String[] args)
  18.         {
  19.                 Test t1 = new Test("one----");
  20.                 Test t2 = new Test("two++++");

  21.                 t1.start();
  22.                 t2.start();
  23.                 for (int x=0; x<60; x++)
  24.                 {
  25.                         System.out.println("main...."+x);
  26.                 }
  27.         }
  28. }
复制代码
创建多线程方式一 继承Thread类  程序运行结束 java.exe 也结束
  1. class Ticket implements Runnable
  2. {
  3.        private int tick = 100;

  4.        public void run()
  5.       {
  6.             while (true)
  7.            {
  8.                   if (tick>0)
  9.                   {
  10.                             System.out.println(Thread.currentThread().getName()+"....sale...."+tick--);
  11.                   }
  12.            }
  13.      }
  14. }
  15. class TicketDemo
  16. {
  17.       public static void main(String[] args)
  18.      {
  19.               Ticket t = new Ticket();

  20.               Thread t1 = new Thread(t);
  21.               Thread t2 = new Thread(t);
  22.               Thread t3 = new Thread(t);
  23.               Thread t4 = new Thread(t);

  24.               t1.start();
  25.               t2.start();
  26.               t3.start();
  27.               t4.start();
  28.      }
  29. }
复制代码
方式二 实现Runnable 程序运行结束  java.exe 仍在运行  ,这样是否会降低CPU的使用效率?

作者: 张世钦    时间: 2013-3-17 21:50
你的循环有问题
  1. class Ticket implements Runnable
  2. {
  3.        private int tick = 100;

  4.        public void run()
  5.       {
  6.             while (true)//这里不会停,一直转圈
  7.            {
  8.                   if (tick>0)//只是打印了100次,当tick=0的时候就不读这句了,而是无线空转下去
  9.                   {
  10.                             System.out.println(Thread.currentThread().getName()+"....sale...."+tick--);
  11.                   }
  12.            }
  13.      }
  14. }
复制代码

作者: 騛鹏    时间: 2013-3-18 09:16
张世钦 发表于 2013-3-17 21:50
你的循环有问题

谢谢 是这个问题




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