java多线程

1 线程的状态:

   创建(new)、就绪(runnable)、运行(running)、阻塞(blocked)、time waiting、waiting、消亡(dead)

2 wait和sleep区别

  1)sleep()方法属于Thread类,wait()方法,属于Object类。

  2)sleep()方法导致了程序暂停执行指定的时间,会让出cpu给其他线程,但是不会释放对象锁,当指定的时间到了又会自动恢复运行状态。

  3) wait方法会让线程进入阻塞状态,并且会释放线程占有的锁,并交出CPU执行权限

3 yield方法

   1)yield方法会让当前线程交出CPU权限,同样不会释放锁。但是yield不能控制具体的交出CPU的时间,

   2)yield方法只能让拥有相同优先级的线程有获取CPU执行时间的机会。

   3)yield方法并不会让线程进入阻塞状态,而是让线程重回就绪状态,它只需要等待重新获取CPU执行时间

4 join方法

   1)join方法是调用了Object的wait方法

   2) 调用thread1.join()方法后,main线程会进入等待,然后等待thread1执行完之后再继续执行

5 interrupt方法

  1)interrupt方法可以中断处于阻塞状态的线程

  2)interrupt方法不能直接中断正在运行中的线程,但是可以通过interrupt方法和isInterrupted()方法来停止正在运行的线程,调用interrupt方法相当于将中断标志位置为true

原文地址:https://www.cnblogs.com/eryun/p/9964902.html