4-10-线程基本方法

文章目录
  1. 1. 线程基本方法
    1. 1.1. wait
      1. 1.1.1. 1.会释放锁
      2. 1.1.2. 2.一般在同步方法和同步代码块中
    2. 1.2. sleep
      1. 1.2.1. 不会释放锁
    3. 1.3. yield
      1. 1.3.1. 让出cpu时间片,与其他线程一起重新竞争cpu
    4. 1.4. interrupt
      1. 1.4.1. 1.通知信号,影响一个中断标识位,并不会立马终止running线程
      2. 1.4.2. 2.sleep会从timed-waiting状态抛出InterruptedException。
      3. 1.4.3. 3.终止一个线程 thread 的时候,可以调用 thread.interrupt()方法,在线程的 run 方法内部可以根据 thread.isInterrupted()的值来优雅的终止线程
    5. 1.5. join
      1. 1.5.1. 1.其他线程join,当前线程等待其他线程终止,才从阻塞到就绪,等待cpu宠幸
      2. 1.5.2. 2.例子
    6. 1.6. notify

线程基本方法

image-20210705190720813

wait

1.会释放锁

2.一般在同步方法和同步代码块中

sleep

不会释放锁

yield

让出cpu时间片,与其他线程一起重新竞争cpu

interrupt

1.通知信号,影响一个中断标识位,并不会立马终止running线程

2.sleep会从timed-waiting状态抛出InterruptedException。

3.终止一个线程 thread 的时候,可以调用 thread.interrupt()方法,在线程的 run 方法内部可以根据 thread.isInterrupted()的值来优雅的终止线程

join

1.其他线程join,当前线程等待其他线程终止,才从阻塞到就绪,等待cpu宠幸

2.例子

1
2
3
4
5
System.out.println(Thread.currentThread().getName() + "线程运行开始!");
Thread6 thread1 = new Thread6();
thread1.setName("线程 B");
thread1.join();
System.out.println("这时 thread1 执行完毕之后才能执行主线程");

notify

唤醒在此对象监视器上等待的单个线程,如果所有线程都在此对象上等待,则会选择唤醒其中一个线程,选择是任意的,并在对实现做出决定时发生,线程通过调用其中一个 wait() 方法,在对象的监视器上等待,直到当前的线程放弃此对象上的锁定,才能继续执行被唤醒的线程,被唤醒的线程将以常规方式与在该对象上主动同步的其他所有线程进行竞争。