共计 1251 个字符,预计需要花费 4 分钟才能阅读完成。
线程无关办法
void start():启动线程,并执行对象的 run() 办法。
run():线程在被调度时执行的办法体。
String getName():返回线程的名称。
void setName(String name):设置该线程的名称。
static Thread currentThread():返回以后线程对象。在 Thread 子类中就是 this,通常用于主线程和 Runnable 实现类。
static void yield():线程退让,开释以后 CPU 的执行权。下一刻可能又立马失去。暂停以后正在执行的线程,把执行机会让给优先级雷同或更高的线程。若队列中没有同优先级的线程,疏忽此办法。
join():在线程 A 中调用线程 B 的 join(),此时线程 A 就进入阻塞状态,直到线程 B 齐全执行完当前,线程 A 才完结阻塞状态(相当于插队)。低优先级的线程也能够取得执行。
static void sleep(long millis):让以后线程睡眠指定毫秒数,在睡眠期间,以后线程是阻塞状态。不会开释锁。令以后流动线程在指定时间段内放弃对 CPU 管制,使其余线程有机会被执行,工夫到后重排队。抛出 InterruptedException 异样。
stop():强制线程生命期完结,不举荐应用。(已过期)。
boolean isAlive():返回 boolean,判断线程是否还活着。
代码示例:join() 应用
复制代码
1 public class Main {
2 public static void main(String[] args) throws InterruptedException {
3 MyThread myThread = new MyThread();
4 myThread.setName(“ 线程一 ”);
5 myThread.start();
6
7 Thread.currentThread().setName(“ 主线程 ”);
8 for (int i = 0; i < 100; i++) {
9 if (i % 2 == 0) {
10 System.out.println(Thread.currentThread().getName() + “:” + i);
11 }
12 // 主线程拿到 CPU 执行权到 i =40 时, 会进入阻塞, 等 线程一 执行完才完结
13 if (i == 40) {
14 myThread.join();
15 }
16 }
17 }
18 }
19
20 class MyThread extends Thread {
21
22 @Override
23 public void run() {
24 for (int i = 0; i < 100; i++) {
25 if (i % 2 == 0) {
26 System.out.println(Thread.currentThread().getName() + “:” + i);
27 }
28 }
29 }
30 }
复制代码
5、线程调度
调度策略:工夫片轮训;抢占式,高优先级的线程抢占 CPU。
Java 的调度办法:同优先级线程组成先进先出队列(先到先服务),应用工夫片策略;对高优先级,应用优先调度的抢占式策略。