返回顶部
首页 > 资讯 > 精选 >Java通过wait()和notifyAll()方法实现线程间通信
  • 760
分享到

Java通过wait()和notifyAll()方法实现线程间通信

javawaitnotifyall 2023-05-31 16:05:54 760人浏览 安东尼
摘要

本文实例为大家分享了Java实现线程间通信的具体代码,供大家参考,具体内容如下Java代码(使用了2个内部类):package Threads;import java.util.LinkedList;public class ProdCon

本文实例为大家分享了Java实现线程间通信的具体代码,供大家参考,具体内容如下

Java代码(使用了2个内部类):

package Threads;import java.util.LinkedList;public class ProdCons { protected LinkedList<Object> list = new LinkedList<>(); protected int max; protected boolean done = false; public static void main(String[] args) throws InterruptedException {  ProdCons prodCons = new ProdCons(100, 3, 4);  Thread.sleep(5 * 1000);  synchronized (prodCons.list) {   prodCons.done = true;   try {    prodCons.notifyAll();   } catch (Exception ex) {   }  } } private ProdCons(int maxThreads, int nP, int nC) {  this.max = maxThreads;  for (int i = 0; i < nP; i++) {   new Producer().start();  }  for (int i = 0; i < nC; i++) {   new Consumer().start();  } } class Producer extends Thread {  public void run() {   while (true) {    Object justProduced = null;    try {     justProduced = getObj();    } catch (InterruptedException e) {     e.printStackTrace();    }    synchronized (list) {     while (list.size() == max) {      try {       list.wait();      } catch (InterruptedException e) {       System.out.println("Producer INTERRUPTED");      }     }     list.addFirst(justProduced);     list.notifyAll();     System.out.println("Produced 1;List size now " + list.size());     if (done) {      break;     }    }   }  } } class Consumer extends Thread {  public void run() {   while (true) {    Object object = null;    synchronized (list) {     if (list.size() == 0) {      try {       list.wait();      } catch (InterruptedException e) {       System.out.println("Consumer INTERRUPTED");      }     }     if (list.size() > 0) {      object = list.removeLast();     }     list.notifyAll();     System.out.println("List size now " + list.size());     if (done) {      break;     }    }    if (null != object) {     System.out.println("Consuming object " + object);    }   }  } } private Object getObj() throws InterruptedException {  Thread.sleep(1000);  return new Object(); }}

--结束END--

本文标题: Java通过wait()和notifyAll()方法实现线程间通信

本文链接: https://lsjlt.com/news/227042.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Java通过wait()和notifyAll()方法实现线程间通信
    本文实例为大家分享了Java实现线程间通信的具体代码,供大家参考,具体内容如下Java代码(使用了2个内部类):package Threads;import java.util.LinkedList;public class ProdCon...
    99+
    2023-05-31
    java wait notifyall
  • Java使用wait和notify实现线程之间的通信
    目录一. 为什么需要线程通信二. wait和notify方法1. wait()方法2. notify()方法 3. notifyAll()方法三. 使用wait和notif...
    99+
    2024-04-02
  • Java如何使用wait/notify实现线程间通信
    本文小编为大家详细介绍“Java如何使用wait/notify实现线程间通信”,内容详细,步骤清晰,细节处理妥当,希望这篇“Java如何使用wait/notify实现线程间通信”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习...
    99+
    2023-07-04
  • Java中怎么使用wait和notify实现线程间的通信
    这篇“Java中怎么使用wait和notify实现线程间的通信”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Java中怎么使...
    99+
    2023-06-30
  • 浅谈Java线程间通信之wait/notify
    Java中的wait/notify/notifyAll可用来实现线程间通信,是Object类的方法,这三个方法都是native方法,是平台相关的,常用来实现生产者/消费者模式。先来我们来看下相关定义:wait() :调用该方法的线程进入WA...
    99+
    2023-05-31
    java 线程wait notify
  • Java怎么使用wait或notify实现线程间通信
    这篇文章主要介绍“Java怎么使用wait或notify实现线程间通信”,在日常操作中,相信很多人在Java怎么使用wait或notify实现线程间通信问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java怎...
    99+
    2023-07-04
  • Java线程通信之wait-notify通信方式详解
    目录1.线程通信的定义2.为什么需要wait-notify3.wait方法和notify方法1、对象的wait()方法2、对象的notify()方法4.wait方法和notify方法...
    99+
    2024-04-02
  • Java线程通信中wait-notify通信的方式是什么
    这篇文章主要介绍“Java线程通信中wait-notify通信的方式是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Java线程通信中wait-notify通信的方式是什么”文章能帮助大家解决问...
    99+
    2023-06-29
  • Java线程间通信方式
    前文了解了线程的创建方式和状态切换,在实际开发时,一个进程中往往有很多个线程,大多数线程之间往往不是绝对独立的,比如说我们需要将A和B 两个线程的执行结果收集在一起然后显示在界面上,又或者比较典型的消...
    99+
    2023-09-24
    java jvm 开发语言 android
  • java线程间通信的方法是什么
    Java线程间通信的方法有以下几种: 使用共享变量:多个线程共享同一个变量,通过对变量的读写操作来实现线程间的通信。例如,一个线程...
    99+
    2023-10-28
    java
  • 怎么在java中实现线程间通信
    这篇文章将为大家详细讲解有关怎么在java中实现线程间通信,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。线程间通信:由于多线程共享地址空间和数据空间,所以多个线程间的通信是一个线程的数据可以...
    99+
    2023-05-30
    java
  • 浅谈Java线程间通信方式
    目录1.volatile和synchronized关键字2.等待/通知机制3.管道输入/输出流4.join()方法5.ThreadLocal()方法总结线程间通信方式有两种:共享内存...
    99+
    2024-04-02
  • Java中实现线程间通信的实例教程
    目录前言1. 如何让两个线程依次执行?2. 如何让两个线程按照指定的方式有序相交?3. 线程 D 在A、B、C都同步执行完毕后执行4. 三个运动员分开准备同时开跑5. 子线程将结果返...
    99+
    2024-04-02
  • android中有哪些实现线程间通信的方法
    这篇文章给大家介绍android中有哪些实现线程间通信的方法,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。1,通过Handler机制主线程中定义Handler,子线程发消息,通知Handler完成UI更新,Handle...
    99+
    2023-06-15
  • Java如何实现线程通信
    今天小编给大家分享一下Java如何实现线程通信的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。什么是线程通信、如何实现所谓线程...
    99+
    2023-06-30
  • Java中怎么实现线程间通信与信号量
    Java中怎么实现线程间通信与信号量,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。1.信号量Semaphore先说说Semaphore,Semaphore可以控制某个资源可...
    99+
    2023-05-30
    java
  • Python通过队列实现进程间通信详情
    目录一、前言二、队列简介三、多进程队列的使用四、使用队列在进程间通信一、前言 在多进程中,每个进程之间是什么关系呢?其实每个进程都有自己的地址空间、内存、数据栈以及其他记录其运行状态...
    99+
    2024-04-02
  • Python如何通过队列实现进程间通信
    本篇内容主要讲解“Python如何通过队列实现进程间通信”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python如何通过队列实现进程间通信”吧!一、前言在多进程中,每个进程之间是什么关系呢?其...
    99+
    2023-07-02
  • linux多线程编程详解教程(线程通过信号量实现通信代码)
    线程分类 线程按照其调度者可以分为用户级线程和核心级线程两种。 (1)用户级线程 用户级线程主要解决的是上下文切换的问题,它的调度算法和调度过程全部由用户自行选择决定,在运行时不需要特定的内核支持。在这里,...
    99+
    2022-06-04
    信号量 线程 多线程
  • Java中线程之间的通信是如何实现的
    这篇文章将为大家详细讲解有关Java中线程之间的通信是如何实现的,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。正常情况下,每个子线程完成各自的任务就可以结束了。不过有的时候,我们希望多个线程...
    99+
    2023-05-31
    java 线程 通信
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作