④. 线程池
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( )方法
- ③. 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();