广州北大青鸟计算机职业培训学校
互联网技术培训、软件技术培训、大数据培训、云计算培训、数据分析培训信息网
当前位置:网站首页 > 软件教程 > Java技术 > 正文

惠州Java同步器中的交换器是什么?_北大青鸟IT学校

作者:邓华发布时间:2021-05-12分类:Java技术浏览:737


导读:Java是现在非常主流的编程语言之一,很多人想转行学习Java。那么,Java同步器中的交换器是什么?下面就让我们一起来看看惠州北大青鸟老师是怎么回答的。

Java是现在非常主流的编程语言之一,很多人想转行学习Java。那么,Java同步器中的交换器是什么?下面就让我们一起来看看惠州北大青鸟老师是怎么回答的。

交换器允许两个线程在同步点处等待彼此。

当两个线程到达时,它们交换一个对象并继续他们的活动。

Exchanger类提供了交换器同步器的实现。

以下代码显示将使用交换器与客户交换数据的生产者线程。

import java.util.ArrayList;import java.util.concurrent.Exchanger;class ExchangerProducer extends Thread {  private Exchanger<ArrayList<Integer>> exchanger;  private ArrayList<Integer> buffer = new ArrayList<Integer>();  public ExchangerProducer(Exchanger<ArrayList<Integer>> exchanger) {
   this.exchanger = exchanger;
 }  public void run() {    while (true) {      try {
       System.out.println("Producer.");
       Thread.sleep(1000);
       fillBuffer();
       System.out.println("Producer has produced and waiting:" + buffer);
       buffer = exchanger.exchange(buffer);
     } catch (InterruptedException e) {
       e.printStackTrace();
     }
   }
 }  public void fillBuffer() {    for (int i = 0; i <= 3; i++) {
     buffer.add(i);
   }
 }
}class ExchangerConsumer extends Thread {  private Exchanger<ArrayList<Integer>> exchanger;  private ArrayList<Integer> buffer = new ArrayList<Integer>();  public ExchangerConsumer(Exchanger<ArrayList<Integer>> exchanger) {
   this.exchanger = exchanger;
 }  public void run() {    while (true) {      try {
       System.out.println("Consumer.");
       buffer = exchanger.exchange(buffer);
       System.out.println("Consumer  has received:" + buffer);
       Thread.sleep(1000);
       System.out.println("eating:"+buffer);
       buffer.clear();
     } catch (InterruptedException e) {
       e.printStackTrace();
     }
   }
 }  
}public class Main {  public static void main(String[] args) {
   Exchanger<ArrayList<Integer>> exchanger = new Exchanger<>();
   ExchangerProducer producer = new ExchangerProducer(exchanger);
   ExchangerConsumer consumer = new ExchangerConsumer(exchanger);
   producer.start();
   consumer.start();
 }
}

上面的代码生成以下结果。

Java同步器中的交换器.png

想了解更多关于Java的资讯,可以来惠州北大青鸟新方舟校区了解一下。

标签:惠州计算机JAVA软件开发惠州计算机Java软件开发惠州计算机JAVA培训惠州计算机JAVA软件开发学校惠州计算机Java软件开发培训JAVAJava软件开发北大青鸟IT计算机学校北大青鸟IT软件学校北大青鸟IT学校


Java技术排行
标签列表
网站分类
文章归档
最近发表