多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
实现4个进度条,分别由4个线程来控制,并为这4个线程设置优先级。运行下面的程序后,但是因为运行速度太快,所以会发现四个进度条是同时变化,其实并不是。上面两个进度条优先级高,所以上面的两个进度条先变化,再到下面两个进度条。 ![](https://img.kancloud.cn/08/70/0870caef3be6634fc6b65c5f89e4a987_835x142.gif) ```java public class PriorityTest extends JFrame{ private Thread threadA; private Thread threadB; private Thread threadC; private Thread threadD; private final JProgressBar progressBarA = new JProgressBar(); private final JProgressBar progressBarB = new JProgressBar(); private final JProgressBar progressBarC = new JProgressBar(); private final JProgressBar progressBarD = new JProgressBar(); public PriorityTest() { super(); getContentPane().setLayout(new FlowLayout(FlowLayout.CENTER)); getContentPane().add(progressBarA); getContentPane().add(progressBarB); getContentPane().add(progressBarC); getContentPane().add(progressBarD); progressBarA.setStringPainted(true); progressBarB.setStringPainted(true); progressBarC.setStringPainted(true); progressBarD.setStringPainted(true); threadA = new Thread(new MyThread(progressBarA)); threadB = new Thread(new MyThread(progressBarB)); threadC = new Thread(new MyThread(progressBarC)); threadD = new Thread(new MyThread(progressBarD)); setPriority("threadA", 5, threadA); setPriority("threadB", 5, threadB); setPriority("threadC", 4, threadC); setPriority("threadD", 3, threadD); } /** * 设置线程优先级,并启动线程 * @param threadName * @param priority * @param t */ public static void setPriority(String threadName, int priority, Thread t) { t.setPriority(priority); // 设置线程优先级 t.setName(threadName); t.start(); } /** * 初始化窗口 * @param frame * @param width * @param height */ public static void init(JFrame frame, int width, int height) { frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setSize(width, height); frame.setResizable(false); frame.setVisible(true); } public static void main(String[] args) { init(new PriorityTest(), 200, 300); } /** * 这是一个内部类,实现线程 */ private final class MyThread implements Runnable { private final JProgressBar bar; int count = 0; int i = 0; private MyThread(JProgressBar bar) { this.bar = bar; } @Override public void run() { try { while (true) { if (count >= 100) return; bar.setValue(count += 10); Thread.sleep(1000); } } catch (InterruptedException e) { System.out.println("当前线程被中断"); } } } } ```