java語言

當前位置 /首頁/計算機/java語言/列表

Java優先順序執行緒程式碼示例

使用過Bit下載軟體的同學應該很清楚,我們有多個下載任務同時執行,而其中的某一個或多個是非常重要的,於是給這些任務設定一個高度優先,以便任務可以獲取更多的頻寬儘早完成下載。Java執行緒的'優先順序也差不多,優先順序越高排程器就會給它越多的CPU執行時間,但請注意:如果有多個執行緒在等待一個機鎖的時候,並不是優先順序越高就可以越早執行。

Java優先順序執行緒程式碼示例

複製程式碼 程式碼如下:

import erLayout;

import onEvent;

import onListener;

import ton;

import me;

import el;

import el;

import tField;

/**

* 執行緒的優先順序

* 10個計數器執行緒分別被設定了不同的優先順序,我們通過計數器的累加來觀察優先順序的作用

* @author 五斗米

* @blog

*/

public class TestMain extends JFrame {

private MyThread [] thread = null; // 要操作的執行緒

private JPanel pane = null;

private JButton startButton = null, stopButton = null; // 啟動、結束按鈕

public TestMain(){

super("執行緒的優先順序");

pane = new JPanel();

thread = new MyThread[10];

for(int i = 0; i < 10; i++){ // 執行緒的優先順序最小是1,最大是10

thread[i] = new MyThread(i + 1);

}

startButton = new JButton("執行");

ctionListener(new ActionListener(){

public void actionPerformed(ActionEvent e) {

for(int i = 0; i < 10; i++){

thread[i]t();

}

}

});

stopButton = new JButton("結束");

ctionListener(new ActionListener(){

public void actionPerformed(ActionEvent e) {

for(int i = 0; i < 10; i++){

thread[i]();

}

}

});

JPanel p = new JPanel();

(startButton);

(stopButton);

ontentPane()(pane);

ontentPane()(p, H);

efaultCloseOperation(_ON_CLOSE);

ize(500, 300);

ocationRelativeTo(null);

isible(true);

}

/**

* 計數器執行緒

*/

class MyThread extends Thread{

private JTextField text = null; // 計數器

private int i = 0; // 計數器

private int priority = 0; // 優先順序

private JLabel label = null; // 優先順序顯示標籤

private boolean b = true; // 控制執行緒結束的boolean變數

public MyThread(int priority){

rity = priority;

riority(priority);

JPanel p = new JPanel();

label = new JLabel("Priority=" + priority);

text = new JTextField(12);

(label);

(text);

(p); // 將自己的計數器加入主視窗面板中

}

/**

* 結束執行緒

*/

public void quit(){

b = false;

}

public void run(){

while(b){

ext(ring(i++));

try {

p(1); // 減小這裡的毫秒數,可以讓我們更容易觀察到結果

} catch (InterruptedException ex) {

tStackTrace();

}

}

}

}

public static void main(String [] args){

new TestMain();

}

}