Schüler, die Bit-Download-Software verwendet haben, sollten sich darüber im Klaren sein, dass mehrere Download-Aufgaben gleichzeitig ausgeführt werden und eine oder mehrere davon sehr wichtig sind. Daher legen wir für diese Aufgaben eine hohe Priorität fest, damit die Aufgaben mehr Bandbreite erhalten Schließt den Download so früh wie möglich ab. Die Prioritäten von Java-Threads sind ähnlich. Je höher die Priorität, desto mehr CPU-Ausführungszeit gibt der Scheduler. Beachten Sie jedoch: Wenn mehrere Threads auf eine Maschinensperre warten, bedeutet dies nicht, dass die Priorität höher ist. Je mehr CPU-Ausführungszeit es hat, desto früher kann es ausgeführt werden.
Kopieren Sie den Codecode wie folgt:
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
/**
* Thread-Priorität
* Die 10 Zählerthreads sind mit unterschiedlichen Prioritäten versehen. Wir beobachten die Wirkung von Prioritäten durch die Anhäufung von Zählern.
* @author fünf Eimer Reis
* @blog http://blog.csdn.net/mq612
*/
öffentliche Klasse TestMain erweitert JFrame {
private MyThread [] thread = null; // Thread, der bearbeitet werden soll
privater JPanel-Bereich = null;
private JButton startButton = null, stopButton = null; // Start- und Endschaltflächen
public TestMain(){
super("Thread-Priorität");
pane = neues JPanel();
thread = new MyThread[10];
for(int i = 0; i < 10; i++){ // Die minimale Thread-Priorität ist 1 und die maximale ist 10
thread[i] = new MyThread(i + 1);
}
startButton = new JButton("Execute");
startButton.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
for(int i = 0; i < 10; i++){
thread[i].start();
}
}
});
stopButton = new JButton("End");
stopButton.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
for(int i = 0; i < 10; i++){
thread[i].quit();
}
}
});
JPanel p = neues JPanel();
p.add(startButton);
p.add(stopButton);
this.getContentPane().add(pane);
this.getContentPane().add(p, BorderLayout.NORTH);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setSize(500, 300);
this.setLocationRelativeTo(null);
this.setVisible(true);
}
/**
* Gegenfaden
*/
Klasse MyThread erweitert Thread{
privates JTextField text = null; // Zähler
private int i = 0; // Zähler
private int priorität = 0; // priorität
private JLabel label = null; //Prioritätsanzeigeetikett
private boolean b = true; // boolesche Variable, die das Ende des Threads steuert
public MyThread(int priorität){
this.priority = Priorität;
this.setPriority(priority);
JPanel p = neues JPanel();
label = new JLabel("Priority=" + Priority);
text = neues JTextField(12);
p.add(label);
p.add(text);
pane.add(p); // Eigenen Zähler zum Hauptfenster hinzufügen
}
/**
* Thread beenden
*/
public void quit(){
b = falsch;
}
public void run(){
while(b){
this.text.setText(Integer.toString(i++));
versuchen {
this.sleep(1); // Die Reduzierung der Millisekunden hier kann es uns erleichtern, die Ergebnisse zu beobachten
} Catch (InterruptedException ex) {
ex.printStackTrace();
}
}
}
}
public static void main(String [] args){
new TestMain();
}
}