欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

Java线程优先级示例,java优先级示例,使用过Bit下载软件的同

来源: javaer 分享于  点击 7219 次 点评:241

Java线程优先级示例,java优先级示例,使用过Bit下载软件的同


使用过Bit下载软件的同学应该很清楚,我们有多个下载任务同时执行,而其中的某一个或多个是非常重要的,于是给这些任务设定一个高度优先,以便任务可以获取更多的带宽尽早完成下载。Java线程的优先级也差不多,优先级越高排程器就会给它越多的CPU执行时间,但请注意:如果有多个线程在等待一个机锁的时候,并不是优先级越高就可以越早执行。

TestMain.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;/** * 线程的优先级 * 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();    }}
相关栏目:

用户点评