全文预览

操作系统课程设计——交通信号灯模拟

上传者:梦&殇 |  格式:doc  |  页数:18 |  大小:217KB

文档介绍
r. red ); if ( color2 == "绿") g.setColor(Color. green ); /** * 东西方向的信号灯, 并调用 Graphic 的 fillOval 方法,设置东西方向上信号灯的坐标 9 */ g.fillOval( x+ 85, y+i* 15, 15, 15); g.fillOval( x,y+ 55 +i* 15, 15, 15); }} 对于各个方向上信号灯线程的控制,我们定义了两个成员内部类来实现,这两个类继承了 Thread 类作为信号灯的线程,对信号灯来进行控制,这样方便进行调用,不用在不同的块中定义更多的类,而且定义的属性也有相应的权限,代码如下: /** *** 定义一个类 Direct , 继承 Thread, 作为南北方向上信号灯*的线程,用来控制南北方法的信号灯*/ class Direct extends Thread { private Jerry a1 ; // 定义一个 Jerry 的属性,用来控制南北方向上信号灯 10 public Direct(Jerry a) { a1 = a; } public void run() { for ( int j= 0; j< 100 + j; j++) synchronized ( a1 ){ // 调用 synchronized 同步监视器将当前线程锁住, 使得在当前进程运行时, 不允许其他线程来访问 for ( int i= 0; i< 100; i++) { x1 += 5; //x1 坐标的变化,使得" 南北行" 在面板上运动 repaint(); //x1 每加一次,就重绘一次 if ( x1 == 285) // 当 x1=285, 就将 x1 重置为 0, x1 = 0; try { Thread. sleep (50); // 重置为 0后,将

收藏

分享

举报
下载此文档