Java multithreading, barra de progreso para realizar un experimento de carreras de caballos

carrera

Voy a hacer un experimento en Java el próximo lunes. Todavía recuerdo que había un programa que no estaba terminado en el último experimento, y entregué apresuradamente el producto semiacabado del informe del experimento (espero que el profesor no encuentre www). Para tener más tiempo para escribir código en la clase de experimentos el próximo lunes, busqué en el informe de experimentos de nuestra escuela. ¡Hey, adivina que! Realmente hay 16 años de informes experimentales. Aunque un poco diferente, los temas son básicamente los mismos, así que comencé a escribir.
Este es un programa sobre carreras de caballos. El tema es el siguiente: Escriba un programa de control de subprocesos múltiples, llamado programa de carreras de caballos. Cree dos subprocesos que representen dos caballos, ajústelos a diferentes prioridades y muestre el proceso de las carreras de caballos en forma de barra de progreso.
El siguiente es el código que escribí después de muchos estudios, espero que los grandes estén en lo cierto.
(El artículo es un poco aleatorio, después de todo, también soy una persona casual www)

import javax.swing.*;
import java.awt.*;
public class Test 
{
    
    
    static Thread threadObj1;
    static Thread threadObj2;
    JFrame frame;
    JPanel panel;
    JLabel label1,label2;
    static JLabel label3;
    static JProgressBar progressBar1;
	static JProgressBar progressBar2;
    public static void main(String[] args)
    {
    
    
    	Test test=new Test();
    	test.go();
        threadObj1=new ThreadClass1();
        threadObj2=new ThreadClass2();
        threadObj1.setPriority(6);
        threadObj2.setPriority(4);
        threadObj1.start();
        threadObj2.start();
    }
    void go() 
    {
    
    
        frame=new JFrame("赛马");
        panel=new JPanel();
        panel.setLayout(new GridLayout(2,2));
        label1=new JLabel("一号马");
        label2=new JLabel("二号马");
        label3=new JLabel("加油!");
        progressBar1 = new JProgressBar(SwingConstants.HORIZONTAL,0,100);
        progressBar1.setStringPainted(true);
        progressBar2 = new JProgressBar(SwingConstants.HORIZONTAL,0,100);
        progressBar2.setStringPainted(true);
        panel.add(label1);
        panel.add(progressBar1);
        panel.add(label2);
        panel.add(progressBar2);
        frame.getContentPane().add(panel,BorderLayout.CENTER);
        frame.getContentPane().add(label3,BorderLayout.SOUTH);
        frame.setSize(300, 100);
        frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        frame.setVisible(true);
    }
}
class ThreadClass1 extends Thread
{
    
    
	public void run()
	{
    
    
		while(Test.progressBar1.getValue()<100)
		{
    
    
			Test.progressBar1.setValue(Test.progressBar1.getValue()+1);
			System.out.println(Test.progressBar1.getValue());
			try{
    
    
				Thread.sleep((int)(Math.random()*300+100));
			}catch(InterruptedException e) {
    
    }
		}
		if(Test.progressBar1.getValue()==100 && Test.progressBar2.getValue()!=100)
			Test.label3.setText("胜利者:1号马!");
	}
}

class ThreadClass2 extends Thread
{
    
    
	public void run()
	{
    
    
		while(Test.progressBar2.getValue()<100)
		{
    
    
			Test.progressBar2.setValue(Test.progressBar2.getValue()+1);
			System.out.println(Test.progressBar2.getValue());
			try{
    
    
				Thread.sleep((int)(Math.random()*300+100));
			}catch(InterruptedException e) {
    
    }
		}
		if(Test.progressBar2.getValue()==100 && Test.progressBar1.getValue()!=100)
			Test.label3.setText("胜利者:2号马!");
	}
}

Supongo que te gusta

Origin blog.csdn.net/shallwecen/article/details/109411379
Recomendado
Clasificación