Juc01_多线程概述、四种实现方式、常用方法API、生命周期、买票案例、synchronized锁(三)

④. 线程池


Juc05_线程池概述、创建方式、七大参数、底层工作原理、拒绝策略


③. 设置和获取线程名称


  • ①. void setName(String name):将此线程的名称更改为等于参数 name


      //FileWriter
      MyThread my1 = new MyThread();
      MyThread my2 = new MyThread();

      //void setName(String name):将此线程的名称更改为等于参数 name
      my1.setName("高铁");
      my2.setName("飞机");

      my1.start();
      my2.start();


②. String getName( ):返回此线程的名称


注意:要是类没有继承Thread,不能直接使用getName( ) ;要是没有继承Thread,要通过Thread.currentThread得到当前线程,然后调用getName( )方法


Juc01_多线程概述、四种实现方式、常用方法API、生命周期、买票案例、synchronized锁(三)


  • ③. static Thread currentThread( )返回对当前正在执行的线程对象的引用


  • .④ 通过构造函数设置线程名称


Thread(String name):通过带参构造进行赋值


Thread(Runnable target , String name)


public class MyThread extends Thread {
    public MyThread() {}

    public MyThread(String name) {
        super(name);
    }
    @Override
    public void run() {
        for (int i = 0; i < 100; i++) {
            System.out.println(getName()+":"+i);
        }
    }
}
//Thread(String name)
MyThread my1 = new MyThread("高铁");
MyThread my2 = new MyThread("飞机");
my1.start();
my2.start();


④. 线程优先级(setPriority)


  • ①. 线程有两种调度模型 [ 了解 ]


分时调度模式:所有线程轮流使用CPU的使用权,平均分配每个线程占有CPU的时间片


抢占式调度模型:优先让优先级高的线程使用CPU,如果线程的优先级相同,那么会随机选择

一个,优先级高的线程获取的CPU时间片相对多一些 [ Java使用的是抢占式调度模型 ]


②. Thread类中设置和获取线程优先级的方法


public final void setPriority(int newPriority):更改此线程的优先级


public final int getPriority():返回此线程的优先级


a. 线程默认优先级是5;线程优先级范围是:1-10; b. 线程优先级高仅仅表示线程获取的CPU时间的几率高,但是要在次数比较多,或者多次运行的时候才能看到你想要的效果


      ThreadPriority tp1 = new ThreadPriority();
      ThreadPriority tp2 = new ThreadPriority();
      ThreadPriority tp3 = new ThreadPriority();

      tp1.setName("高铁");
      tp2.setName("飞机");
      tp3.setName("汽车");
      //设置正确的优先级
      tp1.setPriority(5);
      tp2.setPriority(10);
      tp3.setPriority(1);

      tp1.start();
      tp2.start();
      tp3.start();


Juc01_多线程概述、四种实现方式、常用方法API、生命周期、买票案例、synchronized锁(三)


上一篇:MySQL监控及优化


下一篇:linux中与时间处理相关的函数