<delect id="sj01t"></delect>
  1. <em id="sj01t"><label id="sj01t"></label></em>
  2. <div id="sj01t"></div>
    1. <em id="sj01t"></em>

            <div id="sj01t"></div>
            java語言

            Java優先級線程代碼示例

            時間:2025-03-21 14:40:26 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();

              }

              }

            【Java優先級線程代碼示例】相關文章:

            Java線程同步的優先級介紹04-10

            Java線程同步的優先級是什么04-24

            關于循環的java代碼示例05-28

            java中通用的線程池實例代碼08-27

            java構造函數實現代碼示例04-01

            java的多線程04-09

            java多線程05-11

            Java實現在不同線程中運行的代碼實例詳解06-11

            Java多線程的線程守護例子06-08

            <delect id="sj01t"></delect>
            1. <em id="sj01t"><label id="sj01t"></label></em>
            2. <div id="sj01t"></div>
              1. <em id="sj01t"></em>

                      <div id="sj01t"></div>
                      黄色视频在线观看