最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java并發(fā)工具類Exchanger的相關(guān)知識總結(jié)

 更新時間:2021年06月02日 15:03:00   作者:小志的博客  
今天給大家?guī)淼奈恼率荍ava工具類Exchanger的相關(guān)知識總結(jié),文中有非常詳細(xì)的介紹及代碼示例,對正在學(xué)習(xí)java的小伙伴們很有幫助,需要的朋友可以參考下

一、Exchanger的理解

  • Exchanger 屬于java.util.concurrent包;
  • Exchanger 是 JDK 1.5 開始提供的一個用于兩個工作線程之間交換數(shù)據(jù)的封裝工具類;
  • 一個線程在完成一定的事務(wù)后想與另一個線程交換數(shù)據(jù),則第一個先拿出數(shù)據(jù)的線程會一直等待第二個線程,直到第二個線程拿著數(shù)據(jù)到來時才能彼此交換對應(yīng)數(shù)據(jù)。

二、Exchanger類中常用方法

在這里插入圖片描述

  • public Exchanger() 無參構(gòu)造方法。表示創(chuàng)建一個新的交換器。
  • public V exchange(V x) 等待另一個線程到達(dá)此交換點(diǎn)(除非當(dāng)前線程為 interrupted ),然后將給定對象傳輸給它,接收其對象作為回報。

(1)、x :表示可以交換的對象

  • public V exchange(V x, long timeout, TimeUnit unit) 等待另一個線程到達(dá)此交換點(diǎn)(除非當(dāng)前線程為 interrupted或指定的等待時間已過),然后將給定對象傳輸給它,接收其對象作為回報。

(1)、 x :交換對象
(2)、timeout :等待的最長時間
(3)、unit :timeout參數(shù)的時間單位

三、Exchanger類的使用示例

案例場景
模擬客戶端和服務(wù)端交換數(shù)據(jù)。

1、代碼

package com.xz.thread.Exchanger;

import java.util.concurrent.Exchanger;

/**
 * @description:
 * @author: xz
 * @create: 2021-05-31 21:56
 */
public class Demo {

   //定義一個服務(wù)端方法
   public void serverMethod(Exchanger<String> exchanger){
       System.out.println("【服務(wù)端】方法開始執(zhí)行");

       //睡眠1秒鐘
       try {
           Thread.sleep(1000);
       } catch (InterruptedException e) {
           e.printStackTrace();
       }

       //定義服務(wù)端數(shù)據(jù)
       String data="serverData";

       //等待另一個線程到達(dá)此交換點(diǎn)(除非當(dāng)前線程為interrupted),然后將給定對象傳輸給它,接收其對象作為回報。
       String exchangeData="";
       try {
           exchangeData=exchanger.exchange(data);
       } catch (InterruptedException e) {
           e.printStackTrace();
       }
       System.out.println("服務(wù)端原數(shù)據(jù)="+"serverData,"+" 交換后的數(shù)據(jù)=" + exchangeData);
   }

    //定義一個客戶端方法
    public void clientMethod(Exchanger<String> exchanger){
        System.out.println("【客戶端】方法開始執(zhí)行");

        //睡眠3秒鐘
        try {
            Thread.sleep(3000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }

        //定義客戶端數(shù)據(jù)
        String data="clientData";

        //等待另一個線程到達(dá)此交換點(diǎn)(除非當(dāng)前線程為interrupted),然后將給定對象傳輸給它,接收其對象作為回報。
        String exchangeData="";
        try{
            exchangeData =exchanger.exchange(data);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println("客戶端原數(shù)據(jù)="+"clientData, "+"交換后的數(shù)據(jù)=" + exchangeData);

    }
    
    //測試類
    public static void main(String[] args) {
        Demo d =new Demo();

        //實(shí)例化Exchanger
        Exchanger<String> exchanger =new Exchanger();

        //第一個線程
        new Thread(new Runnable() {
            @Override
            public void run() {
                d.serverMethod(exchanger);
            }
        }).start();

        //第二個線程
        new Thread(new Runnable() {
            @Override
            public void run() {
                d.clientMethod(exchanger);
            }
        }).start();
    }
}

2、運(yùn)行main函數(shù),輸出結(jié)果如下:

在這里插入圖片描述

到此這篇關(guān)于Java并發(fā)工具類Exchanger的相關(guān)知識總結(jié)的文章就介紹到這了,更多相關(guān)Java工具類Exchanger內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • JAVA JDK8 List獲取屬性列表

    JAVA JDK8 List獲取屬性列表

    今天小編就為大家分享一篇關(guān)于JAVA JDK8 List獲取屬性列表,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2018-12-12
  • SpringBoot 利用thymeleaf自定義錯誤頁面

    SpringBoot 利用thymeleaf自定義錯誤頁面

    這篇文章主要介紹了SpringBoot 利用thymeleaf自定義錯誤頁面,幫助大家更好的理解和使用springboot 框架,感興趣的朋友可以了解下
    2020-11-11
  • SpringBoot4.5.2 整合HikariCP 數(shù)據(jù)庫連接池操作

    SpringBoot4.5.2 整合HikariCP 數(shù)據(jù)庫連接池操作

    這篇文章主要介紹了SpringBoot4.5.2 整合HikariCP 數(shù)據(jù)庫連接池操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • SpringBoot進(jìn)行數(shù)據(jù)加密和解密的詳細(xì)指南

    SpringBoot進(jìn)行數(shù)據(jù)加密和解密的詳細(xì)指南

    對稱加密算法使用相同的密鑰進(jìn)行加密和解密,其主要優(yōu)點(diǎn)包括速度快和實(shí)現(xiàn)簡單,常見的對稱加密算法有 AES、DES 等,本文將以 AES 為例,展示如何在 Spring Boot 項(xiàng)目中進(jìn)行數(shù)據(jù)加密和解密,需要的朋友可以參考下
    2024-11-11
  • JavaWeb實(shí)現(xiàn)文件的上傳與下載

    JavaWeb實(shí)現(xiàn)文件的上傳與下載

    這篇文章主要為大家詳細(xì)介紹了JavaWeb實(shí)現(xiàn)文件的上傳與下載,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-04-04
  • 使用ftpClient下載ftp上所有文件解析

    使用ftpClient下載ftp上所有文件解析

    最近項(xiàng)目需要寫個小功能,需求就是實(shí)時下載ftp指定文件夾下的所有文件(包括子目錄)到本地文件夾中,保留文件到目錄路徑不變。今天小編給大家分享使用ftpClient下載ftp上所有文件的方法,需要的的朋友參考下吧
    2017-04-04
  • spring cloud openfeign 源碼實(shí)例解析

    spring cloud openfeign 源碼實(shí)例解析

    這篇文章主要介紹了spring cloud openfeign 源碼實(shí)例解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-10-10
  • Java Web 實(shí)現(xiàn)QQ登錄功能一個帳號同一時間只能一個人登錄

    Java Web 實(shí)現(xiàn)QQ登錄功能一個帳號同一時間只能一個人登錄

    對于一個帳號在同一時間只能一個人登錄,下文給大家介紹的非常詳細(xì),對java web qq 登錄功能感興趣的朋友一起看看吧
    2016-11-11
  • Python安裝Jupyter Notebook配置使用教程詳解

    Python安裝Jupyter Notebook配置使用教程詳解

    這篇文章主要介紹了Python安裝Jupyter Notebook配置使用教程詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • java鍵盤錄入的方法舉例詳解

    java鍵盤錄入的方法舉例詳解

    這篇文章主要給大家介紹了關(guān)于java鍵盤錄入的相關(guān)資料,我們在寫程序的時候,數(shù)據(jù)值都是固定的,但是實(shí)際開發(fā)中,數(shù)據(jù)值肯定是變化的,所以,把數(shù)據(jù)改進(jìn)為鍵盤錄入,提高程序的靈活性,需要的朋友可以參考下
    2023-10-10

最新評論

黔江区| 阿克苏市| 玉树县| 台州市| 蛟河市| 北安市| 新建县| 福建省| 巩义市| 郴州市| 台州市| 靖远县| 甘德县| 蓬莱市| 江山市| 彝良县| 建瓯市| 辽阳县| 渭源县| 古丈县| 黄骅市| 西华县| 南汇区| 洛浦县| 连云港市| 拜城县| 湖州市| 广安市| 多伦县| 衡南县| 洛浦县| 怀远县| 噶尔县| 宁武县| 茌平县| 仁寿县| 贵南县| 额济纳旗| 武宣县| 繁峙县| 泗阳县|