Los estudiantes que han usado el software de descarga de Bits deben tener muy claro que tenemos múltiples tareas de descarga ejecutadas al mismo tiempo, y una o más de ellas son muy importantes, por lo que establecemos una alta prioridad para estas tareas para que puedan obtener más ancho de banda. completa la descarga lo antes posible. Las prioridades de los subprocesos de Java son similares. Cuanto mayor sea la prioridad, más tiempo de ejecución de la CPU le dará el programador. Sin embargo, tenga en cuenta que si hay varios subprocesos esperando un bloqueo de la máquina, eso no significa que mayor sea la prioridad. cuanto más tiempo de ejecución de CPU tendrá, antes se podrá ejecutar.
Copie el código de código de la siguiente manera:
importar java.awt.BorderLayout;
importar java.awt.event.ActionEvent;
importar java.awt.event.ActionListener;
importar javax.swing.JButton;
importar javax.swing.JFrame;
importar javax.swing.JLabel;
importar javax.swing.JPanel;
importar javax.swing.JTextField;
/**
* Prioridad del hilo
* Los 10 subprocesos de contador se configuran con diferentes prioridades. Observamos el efecto de las prioridades a través de la acumulación de contadores.
* @autor cinco cubos de arroz
* @blog http://blog.csdn.net/mq612
*/
la clase pública TestMain extiende JFrame {
privado MyThread [] thread = null // Hilo sobre el que operar
panel JPanel privado = nulo;
JButton privado startButton = null, stopButton = null // Botones de inicio y fin;
prueba pública principal(){
super("Prioridad del hilo");
panel = nuevo JPanel();
hilo = nuevo MiHilo[10];
for(int i = 0; i < 10; i++){ // La prioridad mínima del hilo es 1 y la máxima es 10
hilo[i] = nuevo MiHilo(i + 1);
}
startButton = new JButton("Ejecutar");
startButton.addActionListener(nuevo ActionListener(){
acción vacía pública realizada (ActionEvent e) {
para(int i = 0; i < 10; i++){
hilo[i].start();
}
}
});
stopButton = new JButton("Fin");
stopButton.addActionListener(nuevo ActionListener(){
acción vacía pública realizada (ActionEvent e) {
para(int i = 0; i < 10; i++){
hilo[i].quit();
}
}
});
JPanel p = nuevo JPanel();
p.add(botón de inicio);
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(nulo);
this.setVisible(verdadero);
}
/**
* Contrahilo
*/
clase MyThread extiende Thread{
privado JTextField texto = nulo // contador;
privado int i = 0; // contador
prioridad int privada = 0 // prioridad
etiqueta JLabel privada = nulo // Etiqueta de visualización de prioridad
private boolean b = true; // variable booleana que controla el final del hilo
público MyThread(int prioridad){
esta.prioridad = prioridad;
this.setPriority(prioridad);
JPanel p = nuevo JPanel();
etiqueta = nueva JLabel("Prioridad=" + prioridad);
texto = nuevo JTextField(12);
p.add(etiqueta);
p.add(texto);
pane.add(p); // Agrega tu propio contador al panel de la ventana principal
}
/**
* Fin del hilo
*/
salida nula pública(){
b = falso;
}
ejecución pública vacía(){
mientras(b){
this.text.setText(Integer.toString(i++));
intentar {
this.sleep(1); // Reducir el número de milisegundos aquí puede facilitarnos la observación de los resultados.
} captura (excepción interrumpida ex) {
ex.printStackTrace();
}
}
}
}
principal vacío estático público (String [] argumentos) {
nuevo TestMain();
}
}