Java笔记(二十)线程间通信

概述

当需要多线程配合完成一项任务时,往往需要用到线程间通信,以确保任务的稳步快速运行

相关语句

wait():挂起线程,释放锁,相当于自动放弃了执行权限

notify():唤醒wait等待队列里的第一个线程

notifyAll():唤醒所有等待队列中的线程

他们都使用在同步中,因为要对持有监视器(锁)的线程操作,所以要使用在同步中,因为只有同步才具有锁

相关问题 为什么这些操作线程的方法要定义在Object类中

因为这些方法是依赖于锁进行的,而锁又是任意对象,所以这些方法必须定义在Object中,才可以被任意对象的锁调用

为什么使用notifyAll而不是notify

因为notify唤醒的只是等待队列里的第一个线程,该线程不确定,,有可能是对方线程,也有可能是本方线程,所以要使用notifyAll来唤醒所有线程,并配合while循环判断标记才能保证运行的正常

实例代码

GunisEmpty;putBullet()shotBullet()(bullet == 0)PutBullet .g = g;run()ShotBullet .g = g;run()MutiThreadDemo main(String[] args) Thread(Thread(new ShotBullet(g)).start(); 101:} 102: }飞机一阵抖动,我终于说出了最后一句再见。

Java笔记(二十)线程间通信

相关文章:

你感兴趣的文章:

标签云: