Bit 다운로드 소프트웨어를 사용한 학생들은 동시에 여러 다운로드 작업이 실행되고 그 중 하나 이상이 매우 중요하다는 점을 매우 분명히 해야 합니다. 따라서 작업이 더 많은 대역폭을 얻을 수 있도록 이러한 작업에 높은 우선순위를 설정합니다. 최대한 빨리 다운로드를 완료합니다. Java 스레드의 우선순위는 비슷합니다. 우선순위가 높을수록 스케줄러가 더 많은 CPU 실행 시간을 제공합니다. 그러나 참고: 머신 잠금을 기다리는 스레드가 여러 개 있다고 해서 우선순위가 높다는 의미는 아닙니다. CPU 실행 시간이 길어질수록 더 빨리 실행될 수 있습니다.
다음과 같이 코드 코드를 복사합니다 .
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;
/**
* 스레드 우선순위
* 10개의 카운터 스레드는 서로 다른 우선순위로 설정되어 있으며, 카운터의 누적을 통해 우선순위의 효과를 관찰합니다.
* @저자 쌀 다섯통
* @blog http://blog.csdn.net/mq612
*/
공개 클래스 TestMain은 JFrame을 확장합니다.
private MyThread [] thread = null; // 작업할 스레드
개인 JPanel 창 = null;
private JButton startButton = null, stopButton = null // 시작 및 종료 버튼
공개 테스트메인(){
super("스레드 우선순위");
창 = new JPanel();
스레드 = 새로운 MyThread[10];
for(int i = 0; i < 10; i++){ // 최소 스레드 우선순위는 1이고 최대값은 10입니다.
thread[i] = new MyThread(i + 1);
}
startButton = new JButton("실행");
startButton.addActionListener(새 ActionListener(){
공공 무효 actionPerformed(ActionEvent e) {
for(int i = 0; i < 10; i++){
스레드[i].start();
}
}
});
stopButton = new JButton("End");
stopButton.addActionListener(새 ActionListener(){
공공 무효 actionPerformed(ActionEvent e) {
for(int i = 0; i < 10; i++){
스레드[i].quit();
}
}
});
JPanel p = new 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);
}
/**
* 카운터 스레드
*/
MyThread 클래스는 Thread를 확장합니다.
개인 JTextField 텍스트 = null;
개인 int i = 0 // 카운터
개인 int 우선순위 = 0; // 우선순위
private JLabel label = null //우선순위 표시 라벨;
private boolean b = true; // 스레드의 끝을 제어하는 부울 변수
공개 MyThread(정수 우선순위){
this.우선순위 = 우선순위;
this.setPriority(우선순위);
JPanel p = new JPanel();
label = new JLabel("우선순위=" + 우선순위);
텍스트 = 새로운 JTextField(12);
p.add(라벨);
p.add(텍스트);
Pane.add(p); // 기본 창 패널에 자신만의 카운터를 추가합니다.
}
/**
* 스레드 종료
*/
공개 무효 종료(){
b = 거짓;
}
공개 무효 실행(){
동안(b){
this.text.setText(Integer.toString(i++));
노력하다 {
this.sleep(1); // 여기서 밀리초 수를 줄이면 결과를 더 쉽게 관찰할 수 있습니다.
} catch (InterruptedException ex) {
ex.printStackTrace();
}
}
}
}
공개 정적 무효 메인(문자열 [] 인수){
새로운 테스트메인();
}
}