⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 test1.java

📁 这个程序只要用于实现进程(线程)互斥与同步
💻 JAVA
字号:
import java.awt.*;
import java.applet.Applet;
import java.awt.Color;
import javax.swing.JPanel;


public class Test1 extends JPanel
{
      东西向 td;南北向 td2;
      交通信号灯 a=new 交通信号灯();
      String xhd="东西灯";
      Graphics g;
      int x1=0,y1=80;
 
      public void start()
      {
            if(td==null)td=new 东西向(a);td.start();
            if(td2==null)td2=new 南北向(a);td2.start();
      }
      
      public void paint(Graphics g){
       g.setColor(Color.DARK_GRAY);
       g.fillRect(0,100,300,100);
       g.fillRect(100,0,100,300);
       g.setColor(Color.red);
       g.drawString("南北行",100,y1-15);
       g.drawString("南北行",100,y1);
       g.drawString("南北行",160,310-y1);
       g.drawString("南北行",160,325-y1);
       g.drawString("东西行",265-x1,115);
       g.drawString("东西行",265-x1,130);
       g.drawString("东西行",x1,180);
       g.drawString("东西行",x1,195);
       if(xhd=="东西灯")a.切换信号灯(100,85,"红","绿",g);
       if(xhd=="南北灯")a.切换信号灯(100,85,"绿","红",g);
       if(xhd=="黄灯")a.切换信号灯(100,85,"黄","黄",g);
      }
      class 交通信号灯{
            int x,y;String 颜色1,颜色2,d;int 显示时间;
            public void 切换信号灯(int x1,int y1,String c1,String c2,Graphics g)
            {
                  x=x1;y=y1;颜色1=c1;颜色2=c2;
                  for(int i=0;i<3;i++)
                  {
                        if(颜色1=="黄")g.setColor(Color.yellow);
                        if(颜色1=="红")g.setColor(Color.red);
                        if(颜色1=="绿")g.setColor(Color.green);
                        g.fillOval(x+i*15,y,15,15);
                        g.fillOval(x+55+i*15,y+115,15,15);
                        if(颜色2=="黄")g.setColor(Color.yellow);
                        if(颜色2=="红")g.setColor(Color.red);
                        if(颜色2=="绿")g.setColor(Color.green);
                        g.fillOval(x+100,y+15+i*15,15,15);
                        g.fillOval(x-15,y+70+i*15,15,15);
                  }
            }
      }
      class 东西向 extends Thread
      {
            private 交通信号灯 a1;
            public 东西向(交通信号灯 a){a1=a;}
            public void run()
            {
                  for(int j=0;j<100+j;j++)
                  {
                        synchronized(a1){
                         for(int i=0;i<100;i++)
                         {
                               x1+=5;repaint();if(x1==285)x1=0;
                               try{Thread.sleep(50);}catch(InterruptedException e){}
                         }
                        xhd="黄灯";repaint();try{Thread.sleep(400);}

                         catch(InterruptedException e){}
                        xhd="南北灯";x1=50;repaint();}
    
                    }
               }
      }
      class 南北向 extends Thread
      {
            private 交通信号灯 a1;
            public 南北向(交通信号灯 a){a1=a;}
            public void run(){
             for(int j=0;j<100+j;j++){
                   synchronized(a1){for(int i=0;i<100;i++)

                         {y1+=5;repaint();if(y1==285)y1=0;
                             try{Thread.sleep(50);}catch(InterruptedException e){}}
                   xhd="黄灯";repaint();try{Thread.sleep(400);}

                    catch(InterruptedException e){}
                   xhd="东西灯";y1=80;repaint();}
                  }
            }
       }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -