<address id="ousso"></address>
<form id="ousso"><track id="ousso"><big id="ousso"></big></track></form>
  1. 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

    <address id="ousso"></address>
    <form id="ousso"><track id="ousso"><big id="ousso"></big></track></form>
    1. 日日做夜狠狠爱欧美黑人