Les étudiants qui ont utilisé le logiciel de téléchargement Bit doivent être très clairs sur le fait que plusieurs tâches de téléchargement sont exécutées en même temps, et qu'une ou plusieurs d'entre elles sont très importantes, nous accordons donc une priorité élevée à ces tâches afin qu'elles puissent obtenir plus de bande passante. termine le téléchargement le plus tôt possible. Les priorités des threads Java sont similaires. Plus la priorité est élevée, plus le planificateur lui accordera de temps d'exécution CPU. Attention toutefois : si plusieurs threads attendent un verrouillage de la machine, cela ne signifie pas que plus la priorité est élevée. plus il aura de temps d'exécution CPU, plus tôt il pourra être exécuté.
Copiez le code comme suit :
importer java.awt.BorderLayout ;
importer java.awt.event.ActionEvent ;
importer java.awt.event.ActionListener ;
importer javax.swing.JButton ;
importer javax.swing.JFrame ;
importer javax.swing.JLabel ;
importer javax.swing.JPanel ;
importer javax.swing.JTextField ;
/**
* Priorité du fil
* Les 10 compteurs sont définis avec des priorités différentes. Nous observons l'effet des priorités à travers l'accumulation de compteurs.
* @author cinq seaux de riz
* @blog http://blog.csdn.net/mq612
*/
la classe publique TestMain étend JFrame {
private MyThread [] thread = null; // Thread sur lequel opérer
volet JPanel privé = null ;
private JButton startButton = null, stopButton = null; // Boutons de début et de fin
public TestMain(){
super("Priorité du thread");
volet = new JPanel();
fil = nouveau MonThread[10] ;
for(int i = 0; i < 10; i++){ // La priorité minimale du thread est 1 et la priorité maximale est 10
fil[i] = nouveau MonThread(i + 1);
}
startButton = new JButton("Exécuter");
startButton.addActionListener(nouveau ActionListener(){
public void actionPerformed(ActionEvent e) {
pour(int je = 0; je < 10; je++){
fil[i].start();
}
}
});
stopButton = new JButton("Fin");
stopButton.addActionListener(nouveau ActionListener(){
public void actionPerformed(ActionEvent e) {
pour(int je = 0; je < 10; je++){
fil[i].quit();
}
}
});
JPanel p = nouveau 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);
}
/**
* Contre-fil
*/
la classe MyThread étend Thread{
texte JTextField privé = null; // compteur
privé int i = 0; // compteur
priorité int privée = 0; // priorité
private JLabel label = null; //Étiquette d'affichage prioritaire
private boolean b = true; // variable booléenne qui contrôle la fin du thread
public MyThread (priorité int) {
this.priority = priorité ;
this.setPriority(priorité);
JPanel p = nouveau JPanel();
label = new JLabel("Priority=" + priorité);
texte = nouveau JTextField(12);
p.add(étiquette);
p.add(texte);
pane.add(p); // Ajoutez votre propre compteur au panneau de la fenêtre principale
}
/**
* Fin du fil
*/
public void quit(){
b = faux ;
}
public void run(){
tandis que(b){
this.text.setText(Integer.toString(i++));
essayer {
this.sleep(1); // Réduire le nombre de millisecondes ici peut nous permettre d'observer plus facilement les résultats
} catch (InterruptedException ex) {
ex.printStackTrace();
}
}
}
}
public static void main(String [] arguments){
nouveau TestMain();
}
}