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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Whero 中级黑马   /  2014-11-10 16:48  /  732 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

张孝祥老师在Road和LampController两个类中采用的都是Executors去新建一个线程。我想问用Thread方式建线程行不行?用Thread建的线程没法实现效果,感觉运行时只有一个线程在走!求解。。。。。。

Road代码如下:
  1. import java.util.*;
  2. import java.util.concurrent.*;

  3. public class Road {
  4.         private String name;
  5.         private List<String> road=new ArrayList<String>();
  6.        
  7.         public Road(String name)
  8.         {
  9.                 this.name=name;
  10. /*                ExecutorService pool=Executors.newSingleThreadExecutor();
  11.                
  12.                 pool.execute(new Runnable(){
  13.                         @Override
  14.                         public void run() {
  15.                                 for(int i=1;i<1000;i++){
  16.                                         try {
  17.                                                 Thread.sleep((int)(Math.random()*10000));
  18.                                         } catch (InterruptedException e) {
  19.                                                 // TODO Auto-generated catch block
  20.                                                 e.printStackTrace();
  21.                                         }
  22.                                         road.add(Road.this.name+"第"+i+"辆车------");
  23.                                 }
  24.                         }       
  25.                 });
  26.                 ScheduledExecutorService  timer=Executors.newScheduledThreadPool(1);
  27.                
  28.                 timer.scheduleAtFixedRate(
  29.                                 new Runnable(){
  30.                                         @Override
  31.                                         public void run() {
  32.                                                 // TODO Auto-generated method stub
  33.                                                 if(road.size()>0){
  34.                                                         boolean lighted=true;
  35.                                                         if(lighted)
  36.                                                                 System.out.println(road.remove(0)+" driving away...... ");
  37.                                                 }
  38.                                         }
  39.                                 },
  40.                                 1,
  41.                                 1,
  42.                                 TimeUnit.SECONDS);*/       
  43.                                
  44.                 new Thread(new Runnable(){
  45.                         @Override
  46.                         public void run() {
  47.                                 for(int i=0;i<1000;i++){
  48.                                         System.out.println("加进来没呀");
  49.                                         try {
  50.                                                 Thread.sleep((int)(Math.random()*10000));
  51.                                         } catch (InterruptedException e) {
  52.                                                 e.printStackTrace();
  53.                                         }
  54.                                         road.add(Road.this.name+" 第"+i+"辆车");
  55.                                 }
  56.                         }
  57.                 }).run();
  58.                
  59.                 new Thread(new Runnable(){
  60.                         @Override
  61.                         public void run() {
  62.                                 // TODO Auto-generated method stub
  63.                                 while(true){
  64.                                         try {
  65.                                                 Thread.sleep(1000);
  66.                                         } catch (InterruptedException e) {
  67.                                                 e.printStackTrace();
  68.                                         }
  69.                                         System.out.println("干什么呢");
  70.                                         boolean light=Lamp.valueOf(Road.this.name).isLighted();
  71.                                         if(light)
  72.                                                 System.out.println(road.remove(0)+" driving away...... ");
  73.                                         //else break;
  74.                                 }
  75.                         }
  76.                 }).run();
  77.         }
  78. }
复制代码


LampController代码如下:
  1. import java.util.concurrent.*;

  2. public class LampController {
  3.        
  4.         private Lamp currentLamp;

  5.         LampController()
  6.         {
  7.                 currentLamp=Lamp.S2N;
  8.                 currentLamp.light();
  9.                 new Thread(new  Runnable(){                       
  10.                         @Override
  11.                         public void run() {
  12.                                 // TODO Auto-generated method stub
  13.                                 while(true)
  14.                                 {
  15.                                         try {
  16.                                                 Thread.sleep(10000);
  17.                                         } catch (InterruptedException e) {
  18.                                                 // TODO Auto-generated catch block
  19.                                                 e.printStackTrace();
  20.                                         }
  21.                                         currentLamp=currentLamp.blackLight();
  22.                                 }
  23.                         }
  24.                        
  25.                 }).run();
  26.                
  27. /*                ScheduledExecutorService pool=Executors.newScheduledThreadPool(1);
  28.                 pool.scheduleAtFixedRate(
  29.                                 new Runnable(){
  30.                                         @Override
  31.                                         public void run() {
  32.                                                 // TODO Auto-generated method stub
  33.                                                 currentLamp=currentLamp.blackLight();
  34.                                         }
  35.                                 },
  36.                                 10,
  37.                                 10,
  38.                                 TimeUnit.SECONDS);*/       
  39.         }
  40. }
复制代码

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马