Siswa yang telah menggunakan perangkat lunak pengunduhan Bit harus sangat jelas bahwa kami memiliki beberapa tugas pengunduhan yang dijalankan pada saat yang sama, dan satu atau lebih dari tugas tersebut sangat penting, jadi kami menetapkan prioritas tinggi untuk tugas-tugas ini sehingga tugas tersebut dapat memperoleh lebih banyak Bandwidth menyelesaikan pengunduhan sedini mungkin. Prioritas thread Java serupa. Semakin tinggi prioritasnya, semakin banyak waktu eksekusi CPU yang diberikan oleh penjadwal. Namun, perlu diperhatikan: jika ada beberapa thread yang menunggu kunci mesin, bukan berarti semakin tinggi prioritasnya. semakin banyak waktu eksekusi CPU yang dimilikinya.
Copy kode kodenya sebagai berikut:
impor java.awt.BorderLayout;
impor java.awt.event.ActionEvent;
impor java.awt.event.ActionListener;
impor javax.swing.JButton;
impor javax.swing.JFrame;
impor javax.swing.JLabel;
impor javax.swing.JPanel;
impor javax.swing.JTextField;
/**
* Prioritas benang
* 10 thread penghitung ditetapkan dengan prioritas berbeda. Kami mengamati pengaruh prioritas melalui akumulasi penghitung.
* @penulis lima ember beras
* @blog http://blog.csdn.net/mq612
*/
kelas publik TestMain memperluas JFrame {
private MyThread [] thread = null; // Thread untuk dioperasikan
panel JPanel pribadi = null;
private JButton startButton = null, stopButton = null; // Tombol mulai dan akhir
Tes Utama publik(){
super("Prioritas thread");
panel = JPanel baru();
thread = new MyThread[10];
for(int i = 0; i < 10; i++){ // Prioritas thread minimum adalah 1 dan maksimum adalah 10
thread[i] = new MyThread(i + 1);
}
startButton = new JButton("Jalankan");
startButton.addActionListener(ActionListener baru(){
public void actionPerformed(ActionEvent e) {
untuk(int saya = 0; saya < 10; saya++){
utas[i].mulai();
}
}
});
stopButton = new JButton("Akhir");
stopButton.addActionListener(ActionListener baru(){
public void actionPerformed(ActionEvent e) {
untuk(int saya = 0; saya < 10; saya++){
utas[i].keluar();
}
}
});
JPanel p = JPanel baru();
p.tambahkan(tombolmulai);
p.tambahkan(stopButton);
this.getContentPane().add(pane);
this.getContentPane().add(p, BorderLayout.NORTH);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
ini.setUkuran(500, 300);
this.setLocationRelativeTo(null);
this.setVisible(benar);
}
/**
* Benang penghitung
*/
kelas MyThread memperluas Thread{
teks JTextField pribadi = null; // penghitung
pribadi int i = 0; // penghitung
prioritas int pribadi = 0; // prioritas
label JLabel pribadi = null; //Label tampilan prioritas
private boolean b = true; // variabel boolean yang mengontrol akhir thread
MyThread publik(prioritas int){
this.prioritas = prioritas;
this.setPriority(prioritas);
JPanel p = JPanel baru();
label = new JLabel("Prioritas=" + prioritas);
teks = JTextField baru(12);
p.tambahkan(label);
p.tambahkan(teks);
pane.add(p); // Tambahkan penghitung Anda sendiri ke panel jendela utama
}
/**
* Akhiri utas
*/
kekosongan umum berhenti(){
b = salah;
}
menjalankan kekosongan publik(){
sementara(b){
this.text.setText(Integer.toString(i++));
mencoba {
this.sleep(1); // Mengurangi jumlah milidetik di sini dapat memudahkan kita mengamati hasilnya
} tangkapan (InterruptedException ex) {
ex.printStackTrace();
}
}
}
}
public static void main(String [] args){
TesUtama baru();
}
}