程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> Java線程優先級示例代碼

Java線程優先級示例代碼

編輯:關於JAVA

Java線程優先級示例代碼。本站提示廣大學習愛好者:(Java線程優先級示例代碼)文章只能為提供參考,不一定能成為您想要的結果。以下是Java線程優先級示例代碼正文


應用過Bit下載軟件的同窗應當很清晰,我們有多個下載義務同時履行,而個中的某一個或多個長短常主要的,因而給這些義務設定一個高度優先,以便義務可以獲得更多的帶寬盡早完成下載。Java線程的優先級也差不多,優先級越高排程器就會給它越多的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個計數器線程分離被設置了分歧的優先級,我們經由過程計數器的累加來不雅察優先級的感化
 * @author 五斗米
 * @blog http://blog.csdn.net/mq612
 */
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("履行");
        startButton.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent e) {
                for(int i = 0; i < 10; i++){
                    thread[i].start();
                }
            }
        });
        stopButton = new JButton("停止");
        stopButton.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent e) {
                for(int i = 0; i < 10; i++){
                    thread[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);
    }
    /**
     * 計數器線程
     */
    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){
            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); // 將本身的計數器參加主窗口面板中
        }
        /**
         * 停止線程
         */
        public void quit(){
            b = false;
        }
        public void run(){
            while(b){
                this.text.setText(Integer.toString(i++));
                try {
                    this.sleep(1); // 減小這裡的毫秒數,可讓我們更輕易不雅察到成果
                } catch (InterruptedException ex) {
                    ex.printStackTrace();
                }
            }
        }
    }

    public static void main(String [] args){
        new TestMain();
    }  

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved