本帖最后由 胡帅冰 于 2013-6-2 10:06 编辑
- import java.util.*;
- class TrafficTest
- {
- public static void main(String[] args)
- {
- String [] direction = {"S2N"};
- for(int i=0;i<direction.length;i++)
- {
- new Thread(new Road(direction[i])).start();
- new Thread(new Road_2()).start();
- }
- }
- }
- class Road implements Runnable
- {
- private String name;
- private ArrayList<String> car;
- private boolean flg=true;
- Road(String name)
- {
- this.name=name;
- }
- Road()
- {
- }
- public ArrayList<String> getCar()
- {
- return car;
- }
- public boolean getFlg()
- {
- return flg;
- }
- private void comeCar()
- {
- car=new ArrayList<String>();
- for(int i=0;i<5;i++)
- {
- try
- {
- //Thread.sleep(new Random().nextInt(10)*1000+1);
- synchronized(TrafficTest.class)
- {
- car.add(this.name+"_"+i);
- }
- }
- catch (Exception e)
- {
- System.out.println(e.getMessage());
- }
- System.out.println("方向为:: "+this.name+"...的第"+i+"辆车来了。。。");
- }
- for(Iterator<String> it=car.iterator();it.hasNext();)
- {
- System.out.println(it.next());
- }
- }
- public void run()
- {
- comeCar();
- }
- }
- class Road_2 extends Road implements Runnable
- {
- public void run()
- {
- ArrayList<String> car=getCar();
- boolean flg=getFlg();
- while(true)
- {
- synchronized(TrafficTest.class)
- {
- if(flg)
- {
- System.out.println(car.remove(0)+"is go");
- }
- }
- }
- }
- }
复制代码 求解怎么解决这个问题。问题一: 为什么这个空指针异常会出现在运行的时候??
问题二: 怎么解决,怎么实现同步??
说明:这个是在交通灯视频看过之后,我写的一段测试Road类的,使用的是实现Runnable类,没有使用视频中的Executor框架的Executors工具类。
谢谢各位了。。。。
|