يجب أن يكون الطلاب الذين استخدموا برنامج تنزيل Bit واضحين جدًا أن لدينا مهام تنزيل متعددة يتم تنفيذها في نفس الوقت، وواحدة منها أو أكثر مهمة جدًا، لذلك نعطي أولوية عالية لهذه المهام حتى تتمكن المهام من الحصول على نطاق ترددي أكبر يكمل التنزيل في أقرب وقت ممكن. تتشابه أولويات سلاسل Java. كلما زادت الأولوية، زاد وقت تنفيذ وحدة المعالجة المركزية الذي سيعطيه المجدول. ومع ذلك، يرجى ملاحظة: إذا كانت هناك سلاسل رسائل متعددة تنتظر قفل الجهاز، فهذا لا يعني أنه كلما زادت الأولوية. كلما زاد وقت تنفيذ وحدة المعالجة المركزية، كلما أمكن تنفيذها بشكل أسرع.
انسخ رمز الكود كما يلي:
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;
/**
* أولوية الموضوع
* تم تحديد خيوط العداد العشرة بأولويات مختلفة ونلاحظ تأثير الأولويات من خلال تراكم العدادات.
* @author خمسة دلاء من الأرز
* @المدونة http://blog.csdn.net/mq612
*/
الطبقة العامة TestMain تمتد JFrame {
Private MyThread [] thread = null;
جزء JPanel الخاص = فارغ؛
Private JButton startButton = null, stopButton = null;
الاختبار العام (){
super("أولوية الموضوع");
جزء = جديد JPanel();
Thread = new MyThread[10];
for(int i = 0; i < 10; i++){ // الحد الأدنى لأولوية مؤشر الترابط هو 1 والحد الأقصى هو 10
Thread[i] = new MyThread(i + 1);
}
startButton = new JButton("Execute");
startButton.addActionListener(new ActionListener(){
إجراء باطل عام (ActionEvent e) {
ل(int i = 0; i < 10; i++){
الموضوع[i].start();
}
}
});
stopButton = new JButton("End");
stopButton.addActionListener(new ActionListener(){
إجراء باطل عام (ActionEvent e) {
ل(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 تمتد الموضوع {
نص JTextField الخاص = فارغ؛
int الخاص i = 0; // العداد
أولوية int الخاصة = 0؛ // الأولوية
تسمية JLabel الخاصة = فارغة؛ // تسمية عرض الأولوية
الخاص boolean b = true؛ // المتغير المنطقي الذي يتحكم في نهاية الموضوع
MyThread العام (أولوية كثافة العمليات) {
this.priority = Priority;
this.setPriority(priority);
JPanel p = new JPanel();
label = new JLabel("Priority=" + Priority);
text = new JTextField(12);
p.add(label);
p.add(text);
pane.add(p); // أضف العداد الخاص بك إلى لوحة النافذة الرئيسية
}
/**
* نهاية الخيط
*/
إنهاء الفراغ العام () {
ب = خطأ؛
}
تشغيل الفراغ العام () {
بينما (ب) {
this.text.setText(Integer.toString(i++));
يحاول {
this.sleep(1); // تقليل عدد المللي ثانية هنا يمكن أن يسهل علينا ملاحظة النتائج
} التقاط (InterruptedException على سبيل المثال) {
ex.printStackTrace();
}
}
}
}
الفراغ الثابت العام الرئيسي (String [] args) {
new TestMain();
}
}