日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

synchronousqueue场景_java并发队列之SynchronousQueue

發布時間:2025/3/19 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 synchronousqueue场景_java并发队列之SynchronousQueue 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

特點:阻塞隊列,此隊列有點特殊,沒有存儲空間,也就是不存儲數據。每一個put操作必須等待一個take操作,反之,每一個take操作也必須等待一個put操作。如果put進去一個數據,那么必須等待這條數據被take走才put操作才算是執行完成。

應用場景:目前沒有想到我碰到的場景,尷尬,但感覺就好比,一個人去相親,一直等著另一方,只有另一方來了,兩個人才可以手牽手一起走,不然就一直等著,有種同步執行的感覺。

代碼案例:

package com.example.web.web;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RestController;

import java.util.concurrent.SynchronousQueue;

import java.util.concurrent.TimeUnit;

@RestController

public class HomeController {

@RequestMapping("/index")

public String index() throws Exception {

SynchronousQueue queue = new SynchronousQueue<>();

//生產者

new Thread(() ->

{

try {

TimeUnit.MILLISECONDS.sleep(3000);

System.out.println("生產者begin");

queue.put("測試數據");

//queue.offer("測試數據", 5, TimeUnit.SECONDS);

System.out.println("生產者end");

} catch (Exception ex) {

}

}).start();

//消費者

new Thread(() ->

{

try {

//TimeUnit.MILLISECONDS.sleep(3000);

System.out.println("消費者begin");

String aa = queue.take();

//String aa = queue.poll(5, TimeUnit.SECONDS);

System.out.println("消費者end" + aa);

} catch (Exception ex) {

}

}).start();

//主線程也等待下

TimeUnit.SECONDS.sleep(10);

return "網站已得到響應";

}

}

添加方法除了put()還有offer(),offer方法不會阻塞線程,有返回結果來判斷是否接受數據成功。可傳入參數,參數含義就是存在隊列中的時間,如果到時間沒有相對的操作來執行就會過期返回false。

take()還有poll()這兩個方法也是一樣的,用poll需要添加參數,如果不添加參數就是不等待直接獲取,獲取不到就是null值。如果有參數表示在規定時間內等待,在等待時間內有put操作則馬上返回值,超過規定時間無put操作就返回null。

在new?SynchronousQueue()時可以傳遞參數,bool類型,表示是否公平排序策略,這個公平排序就是后面來的操作上有序還是無序(說無序其實還是有序)。公平就是FIFO(先進先出),非公平就是LIFO(后進先出)。

參考鏈接:

https://www.cnblogs.com/duanxz/p/3252267.html

https://blog.csdn.net/hudashi/article/details/7076814

總結

以上是生活随笔為你收集整理的synchronousqueue场景_java并发队列之SynchronousQueue的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。