Java基础之——线程通信的理解

来源:互联网 发布:河北北方学院网络教学 编辑:程序博客网 时间:2024/05/17 01:15

   前言:多线程的操作是高并发编程的基础,所以完全理解线程的操作是学好并发编程的第一步。

      1、stop():直接结束当前线程,不理会线程有没有执行完成

      2、sleep():让当前线程休眠一段时间之后执行。(当线程sleep()遇到中断interrupt()时,线程会抛出InterruptedException异常)
      3、interrupt() :中断线程,会设置中断标志位,表示当前线程被中断
         isInterrupted() :判断线程是否被中断(其实就是获取interrupt()中断方法的中断标志位)
         interrupted : 判断当前线程是否被中断,并清除中断标志位
      4、wait():线程等待,会释放对象锁,等到另外获取这个对象锁的线程执行notify()操作,就有机会重新获得锁
      5、notify()\notifyAll():唤醒一个或者所以当前对象锁上等待的线程。释放当前对象锁后,线程可以重新竞争该对象锁,之后可以继续执行之前wait()的线程
      6、suspend():挂起线程,但是不会释放锁(注:这种挂起之后必须执行resume()才能重新执行线程,要避免suspend()操作之前执行resume()那样可以可能造成死锁)
      7、resume():和suspend()配合继续执行挂起线程
      8、join():让当前线程等待目标线程执行完毕再执行,体现出一种顺序执行。

      9、yield():让当前线程让出cpu优点是线程间切换和调度的成本远低于进程


原创粉丝点击