对于线程使用的理解

java中线程的使用方式

  • 这里先说一下,sleep与wait的区别:
    sleep不会释放锁,wait会释放锁。

在几天的学习中,渐渐地对线程有了一些认识。我觉得线程和现实生活息息相关,大致分为两种。

第一种

  • 这一种比较像现实中的的送餐员,(每一个人所做的工作完全相同,但是因为任务量巨大,所以
    用多个送餐员去执行相同的任务),这样的情况多数用来提高计算机执行效率,但是在这种情况下,如果这些送餐员(线程)共享一个资源,可能会出现问题,所以一般会用到同步锁机制。而这种情况下如果送餐员(线程)需要等待,一般是用Thread.sleep()方法。而等待唤醒机制(Object.wait(),Object.notify)一般不用。因为wait方法会释放锁对象,从而失去了同步机制的意义。

第二种

  • 这种比较像现实中的分工合作,例如工厂各个部门的协作,每个部门都有每个部门的任务,而整个公司的整体是一个大的生态圈。有的生产钢铁,有的制作磨具。而这种模式,期间每一个做自己独立的任务的部门都是一个线程,不同的线程与线程之间有一些关系,而两个线程的通信,更多的是用到Object.wait(),Object.notify方法,这两个方法能完成线程间的通信。

如何在一个线程中正常的结束另一个线程?

  • stop方法具有安全隐患,java已经禁止使用。
  • 所以如果线程a处于wait,sleep,join等状态,线程b里面用a线程调用interrupt()方法会使a线程抛出个异常 InterruptedException,而正确的关闭就是catch这个异常,然后在里面catch代码块里面return;就可以正确的关闭。而如果a线程处于一个执行状态,那么b里面用a.interrupt(),直接就回正常的关闭。

参考:https://www.cnblogs.com/loren-Yang/p/7538482.html

猜你喜欢

转载自www.cnblogs.com/jianhaogege/p/10723770.html