博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
多线程(5)—线程通信
阅读量:5079 次
发布时间:2019-06-12

本文共 1260 字,大约阅读时间需要 4 分钟。

  1. 綫程通信

    • wait():令當前綫程挂起,並釋放CPU資源,釋放鎖,而當前綫程則進入到綫程等待隊列
    • notify()/notifyAll():喚醒正在等待的綫程中,優先級最高的(所有的)綫程結束等待
    • 功能:數據遞加,綫程“甲”、“乙”交替執行,輸出數據
      以上這些代碼必須寫在同步代碼塊中,否則報錯
  2. 代码示例

public class Test7 {
public static void main(String[] args) { PrintNum pn = new PrintNum(); Thread t = new Thread(pn); Thread t1 = new Thread(pn); t.setName("甲"); t1.setName("乙"); t.start(); t1.start(); }}class PrintNum implements Runnable{
int num = 1; @Override public void run() { while(true){ synchronized (this) { notify(); //喚醒等待隊列中的綫程 if (num <= 20) { try { Thread.sleep(100); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println(Thread.currentThread().getName() + ":" + (num++)); } else { break; } try { wait();//數據加一,輸出之后,此綫程挂起 } catch (InterruptedException e) { e.printStackTrace(); } } } }}

转载于:https://www.cnblogs.com/tengpengfei/p/10453999.html

你可能感兴趣的文章
web服务器
查看>>
网卡流量检测.py
查看>>
poj1981 Circle and Points 单位圆覆盖问题
查看>>
POP的Stroke动画
查看>>
SQL语句在查询分析器中可以执行,代码中不能执行
查看>>
yii 1.x 添加 rules 验证url数组
查看>>
html+css 布局篇
查看>>
SQL优化
查看>>
用C语言操纵Mysql
查看>>
轻松学MVC4.0–6 MVC的执行流程
查看>>
redis集群如何清理前缀相同的key
查看>>
Python 集合(Set)、字典(Dictionary)
查看>>
获取元素
查看>>
proxy写监听方法,实现响应式
查看>>
第一阶段冲刺06
查看>>
十个免费的 Web 压力测试工具
查看>>
EOS生产区块:解析插件producer_plugin
查看>>
mysql重置密码
查看>>
jQuery轮 播的封装
查看>>
一天一道算法题--5.30---递归
查看>>