นักเรียนที่เคยใช้ซอฟต์แวร์ดาวน์โหลด Bit ควรชัดเจนว่าเรามีงานดาวน์โหลดหลายงานดำเนินการในเวลาเดียวกัน และงานหนึ่งหรือหลายงานมีความสำคัญมาก ดังนั้นเราจึงกำหนดลำดับความสำคัญสูงสำหรับงานเหล่านี้เพื่อให้งานสามารถรับแบนด์วิดท์ได้มากขึ้น การดาวน์โหลดให้เสร็จสิ้นโดยเร็วที่สุด ลำดับความสำคัญของเธรด Java จะคล้ายกัน ยิ่งมีลำดับความสำคัญสูง ตัวกำหนดเวลาในการดำเนินการของ CPU ก็จะยิ่งมากขึ้นเท่านั้น อย่างไรก็ตาม โปรดทราบ: หากมีหลายเธรดที่รอการล็อกเครื่อง ไม่ได้หมายความว่ายิ่งลำดับความสำคัญสูงขึ้น ยิ่งมีเวลาดำเนินการ CPU มากเท่าไรก็ยิ่งสามารถดำเนินการได้เร็วเท่านั้น
คัดลอกรหัสรหัส ดังต่อไปนี้:
นำเข้า java.awt.BorderLayout;
นำเข้า java.awt.event.ActionEvent;
นำเข้า java.awt.event.ActionListener;
นำเข้า javax.swing.JButton;
นำเข้า javax.swing.JFrame;
นำเข้า javax.swing.JLabel;
นำเข้า javax.swing.JPanel;
นำเข้า javax.swing.JTextField;
-
* ลำดับความสำคัญของเธรด
* เธรดตัวนับ 10 ตัวถูกตั้งค่าด้วยลำดับความสำคัญที่แตกต่างกัน เราสังเกตผลกระทบของลำดับความสำคัญผ่านการสะสมของตัวนับ
*@ผู้เขียน ข้าวห้าถัง
* @บล็อก http://blog.csdn.net/mq612
-
TestMain คลาสสาธารณะขยาย JFrame {
เธรด MyThread ส่วนตัว [] = null; // เธรดที่จะดำเนินการ
บานหน้าต่าง JPanel ส่วนตัว = null;
ส่วนตัว JButton startButton = null, stopButton = null; // ปุ่มเริ่มและสิ้นสุด
TestMain สาธารณะ () {
super("ลำดับความสำคัญของเธรด");
บานหน้าต่าง = JPanel ใหม่ ();
เธรด = MyThread ใหม่ [10];
for(int i = 0; i < 10; i++){/ // ลำดับความสำคัญของเธรดขั้นต่ำคือ 1 และสูงสุดคือ 10
เธรด [i] = MyThread ใหม่ (i + 1);
-
startButton = JButton ใหม่ ("ดำเนินการ");
startButton.addActionListener (ActionListener ใหม่ () {
การกระทำที่เป็นโมฆะสาธารณะดำเนินการ (ActionEvent e) {
สำหรับ(int i = 0; i < 10; i++){
เธรด[i].เริ่มต้น();
-
-
-
stopButton = JButton ใหม่ ("สิ้นสุด");
stopButton.addActionListener (ActionListener ใหม่ () {
การกระทำที่เป็นโมฆะสาธารณะดำเนินการ (ActionEvent e) {
สำหรับ(int i = 0; i < 10; i++){
เธรด[i].เลิก();
-
-
-
JPanel p = JPanel ใหม่();
p.add(ปุ่มเริ่มต้น);
p.add(ปุ่มหยุด);
this.getContentPane().add(บานหน้าต่าง);
this.getContentPane().add(p, BorderLayout.NORTH);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
นี้.setSize(500, 300);
this.setLocationRelativeTo(null);
this.setVisible (จริง);
-
-
* ด้ายนับ
-
คลาส MyThread ขยายเธรด {
ข้อความ JTextField ส่วนตัว = null; // ตัวนับ
int ส่วนตัว i = 0; // ตัวนับ
ลำดับความสำคัญ int ส่วนตัว = 0; // ลำดับความสำคัญ
ป้ายกำกับ JLabel ส่วนตัว = null; // ป้ายกำกับการแสดงลำดับความสำคัญ
บูลีนส่วนตัว b = จริง; // ตัวแปรบูลีนที่ควบคุมจุดสิ้นสุดของเธรด
MyThread สาธารณะ (ลำดับความสำคัญ int) {
this.priority = ลำดับความสำคัญ;
this.setPriority (ลำดับความสำคัญ);
JPanel p = JPanel ใหม่();
label = ใหม่ JLabel("Priority=" + ลำดับความสำคัญ);
ข้อความ = JTextField ใหม่ (12);
p.add(ฉลาก);
p.เพิ่ม(ข้อความ);
pane.add(p); // เพิ่มตัวนับของคุณเองไปที่แผงหน้าต่างหลัก
-
-
* ปลายด้าย
-
โมฆะสาธารณะเลิก () {
ข = เท็จ;
-
โมฆะสาธารณะวิ่ง () {
ในขณะที่(ข){
this.text.setText(จำนวนเต็มtoString(i++));
พยายาม {
this.sleep(1); // การลดจำนวนมิลลิวินาทีตรงนี้จะทำให้เราสังเกตผลลัพธ์ได้ง่ายขึ้น
} จับ (InterruptedException เช่น) {
เช่น printStackTrace();
-
-
-
-
โมฆะสาธารณะคงหลัก (สตริง [] args) {
ใหม่ TestMain();
-
-