zoukankan      html  css  js  c++  java
  • java学习之路——线程3(线程之间的通信)

     线程有四种状态,任何一个线程肯定处于这四种状态中的一种:
    1) 产生(New):线程对象已经产生,但尚未被启动,所以无法执行。如通过new产生了一个线程对象后没对它调用start()函数之前。
    2) 可执行(Runnable):每个支持多线程的系统都有一个排程器,排程器会从线程池中选择一个线程并启动它。当一个线程处于可执行状态时,表示它可能正处于线程池中等待排排程器启动它;也可能它已正在执行。如执行了一个线程对象的start()方法后,线程就处于可执行状态,但显而易见的是此时线程不一定正在执行中。
    3) 死亡(Dead):当一个线程正常结束,它便处于死亡状态。如一个线程的run()函数执行完毕后线程就进入死亡状态。
    4) 停滞(Blocked):当一个线程处于停滞状态时,系统排程器就会忽略它,不对它进行排程。当处于停滞状态的线程重新回到可执行状态时,它有可能重新执行。如通过对一个线程调用wait()函数后,线程就进入停滞状态,只有当两次对该线程调用notify或notifyAll后它才能两次回到可执行状态。

    线程一旦启动控制起来就会产生许多问题,线程之间的通信就是十分重要的概念。

    下面是一个例子:

    第一步:建立一个待处理的对象


    第二部:建立两个线程类


     

    第三部:建立主测试类


    运行之后的效果是:

    从运行的效果和分析程序可知,无论启动多少个线程,程序仍能正常1和0进行交替打印。

  • 相关阅读:
    Android 入门到精通 (Index)
    负载平衡与冗余备份方案概述
    Android 程序组件交互分析
    复制时保留文件的目录结构
    notepad++中设置tab缩进的宽度
    scws
    php 将字符(包括汉字) 转换成16进制 (apache access log 中文显示16进制码)
    批量修改完整版本
    根据端口号查进程
    php性能优化
  • 原文地址:https://www.cnblogs.com/lcqBlogs/p/2392385.html
Copyright © 2011-2022 走看看