美文网首页
2020-09-16 Java线程状态、线程间通信、线程池(重要

2020-09-16 Java线程状态、线程间通信、线程池(重要

作者: flynnny | 来源:发表于2020-09-16 01:39 被阅读0次

    一、线程状态

    Thread.STATE6种状态:
    NEW(新建状态):至今尚未启动的线程,即未调用start方法;
    RUNNABLE(运行状态):正在JAVA虚拟机中执行的线程;
    BLOCKED(阻塞状态):受阻塞并等待某个监视器锁的线程;
    WATTING(无线等待状态):无限期等待另一个线程来执行某一特定操作的线程,wait()方法后不竞争锁了,也不会浪费CPU资源
    TIMED_WAITING(休眠状态):等待另一个线程来执行取决于指定等待时间的操作的线程;
    TERMINATED(死亡状态):已退出的线程。

    阻塞状态:具有CPU的执行资格,等待cpu空闲时执行
    休眠状态:放弃CPU执行资格,CPU空闲也不执行


    线程状态1.png

    二、线程间通信

    多个线程并发执行完成共同任务时,我们希望他们有规律的进行,则线程之间需要一些协调通信。(等待唤醒机制

    等待唤醒机制:

    案例:包子铺和顾客
    分析:


    线程状态2.png

    实现:


    线程状态3.1.png 线程状态3.2.png 线程状态3.3.png 线程状态3.4.png

    三、线程池

    如果并发的线程数量很多,并且每个线程都是执行一个很短的时间就结束了,这样频繁创建线程就会大大降低系统效率,因为创建线程和销毁线程需要时间。

    线程池:

    容纳多个线程的容器,其中线程可以反复使用,省去了创建线程对象的操作。
    JDK1.5后内置了线程池可以直接使用。
    ExecutorService es = Executors.newFixedThreadPool(int threads);

    线程池1.png

    相关文章

      网友评论

          本文标题:2020-09-16 Java线程状态、线程间通信、线程池(重要

          本文链接:https://www.haomeiwen.com/subject/djoqyktx.html