zoukankan      html  css  js  c++  java
  • 线程调度

    import java.awt.*;
    import javax.swing.*;
    
    public class PriorityTest extends JFrame {
       Thread threadA;                                        //分别申明4个Thread引用
       Thread threadB;
       Thread threadC;
       Thread threadD;
    
       public PriorityTest() {
          getContentPane().setLayout(new GridLayout(4, 1));   //getContentPane()将窗体转换为一个容器
          JProgressBar progressBar1 = new JProgressBar();     //setLayout()设置窗体布局为4行1列的网格布局
          JProgressBar progressBar2 = new JProgressBar();
          JProgressBar progressBar3 = new JProgressBar();     //分别创建4个进度条JProgressBar
          JProgressBar progressBar4 = new JProgressBar();       
          getContentPane().add(progressBar1);                 //将4个进度条加入到窗体容器
          getContentPane().add(progressBar2);
          getContentPane().add(progressBar3);
          getContentPane().add(progressBar4);
          progressBar1.setStringPainted(true);                //setStringPainted(true)设置进度条显示提示信息
          progressBar2.setStringPainted(true);
          progressBar3.setStringPainted(true);
          progressBar4.setStringPainted(true);
                                                              //构建一个实现了Runnable接口的对象myThread
          //MyThread myThread = new MyThread(progressBar1);   //创建一个新线程threadA--start()--run()后-生命结束
          //threadA = new Thread(myThread);                   //但是myThread对象还在内存中--如果希望也释放--这样
          
          threadA = new Thread(new MyThread(progressBar1));   //用创建匿名对象的方法来创建新的线程
          threadB = new Thread(new MyThread(progressBar2));   //这样一旦线程结束-所有与该线程有关的资源都成为垃圾
          threadC = new Thread(new MyThread(progressBar3));   //java会在特定的时间内自动回收
          threadD = new Thread(new MyThread(progressBar4));
          threadA.setPriority(8);   threadB.setPriority(6);   //setPriority设置线程优先级别1~10级--理论上优先级高
          threadC.setPriority(3);   threadD.setPriority(1);   //先运行--仅表达了程序员的愿望--JVM线程调度会照顾这
          threadA.start();          threadB.start();          //种愿望--但不会绝对保证--可能会选择低级别线程运行
          threadC.start();          threadD.start();          //以避免饥饿(Starvation)
       }
          
       public static void main(String[] args) {
          PriorityTest frame = new PriorityTest();                 //实例化PriorityTest-创建一个JFrame窗口
          frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);    //设置窗口关闭方式-释放-退出程序
          frame.setSize(600,160);
          frame.setVisible(true);
          frame.setLocationRelativeTo(null);                       //设置窗体居中
       }
        
       private final class MyThread implements Runnable {          //定义一个实现Runnable接口的类
          JProgressBar bar;
          int count = 0;
          private MyThread(JProgressBar bar) {
         this.bar = bar;
          }
          public void run() {                                      //重写run()方法
         while (true) {
            for(long i=0;i<=1000000000;i++);
                bar.setValue(count += 1);                          //setValue()设置滚动条的值(每次自增1)
            //try {
            //Thread.sleep(1000);                          //设置线程睡眠时间1秒-也决定了进度条快慢
            //} catch (InterruptedException e) {
            //System.out.println("当前线程序被中断");
            //}
         }
          }
       }
    }
  • 相关阅读:
    监听器heMQ组合的入门练习
    错误积累
    测试cxf 客户端
    day18-1-17获取界面参数
    Station 项目注意事项
    cxf_spring的结合
    ws_cxf入门 错误
    Oracle游标
    Oracle存储函数,存储过程
    Oracle查询
  • 原文地址:https://www.cnblogs.com/ljs-666/p/7976890.html
Copyright © 2011-2022 走看看