今天就跟大家聊聊有关notifyall怎么在java中使用,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。
Java主要应用于:1. web开发;2. Android开发;3. 客户端开发;4. 网页开发;5. 企业级应用开发;6. Java大数据开发;7.游戏开发等。
1.概念
对象调用该方法时,队列中所有处于阻塞状态的线程不再阻塞(当然,哪一个线程先运行由系统决定)
2.语法
public final void notifyAll()
3.参数
无
4.返回值
没有返回值
5.使用注意
唤醒的是notify之前wait的线程,对于notify之后的wait线程是没有效果的。
6.实例
class myThread implements Runnable{
private boolean flag ;
private Object object ;
myThread(boolean flag, Object o){
this.flag = flag;
this.object = o;
}
private void waitThread(){
synchronized (object) {
System.out.println(Thread.currentThread().getName() + "wait begin...");
try {
object.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName() + "wait end...");
}
}
private void notifyThread(){
synchronized (object) {
System.out.println(Thread.currentThread().getName() + "notify begin...");
object.notify();
System.out.println(Thread.currentThread().getName() + "notify end...");
}
}
@Override
public void run() {
if(flag){
waitThread();
}else {
notifyThread();
}
}
}
public class Test {
public static void main(String[] args) throws InterruptedException {
Object object = new Object();
myThread mt2 = new myThread(false,object);
Thread thread1 = new Thread(mt2,"线程B ");
for (int i = 0;i<10;i++) {
myThread mt = new myThread(true,object);
Thread thread = new Thread(mt,"线程A "+i);
thread.start();
}
Thread.sleep(1000);
thread1.start();
}
}
看完上述内容,你们对notifyall怎么在java中使用有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注亿速云行业资讯频道,感谢大家的支持。
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。
原文链接:https://www.py.cn/java/jichu/22727.html