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

java異步編程之一文看完其異步函數(shù)表

 更新時(shí)間:2023年01月26日 13:02:32   作者:楽碼  
這篇文章主要為大家介紹了java異步編程之一文看完其異步函數(shù)表示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

1 低層級(jí) asyncio 索引

低層級(jí) API 索引¶ 列出所有低層級(jí)的 asyncio API。

1.1 獲取事件循環(huán)

獲取當(dāng)前運(yùn)行的事件循環(huán) 首選 函數(shù):

asyncio.get_running_loop() 

獲得一個(gè)事件循環(huán)實(shí)例(當(dāng)前或通過(guò)策略):

asyncio.get_event_loop()

通過(guò)當(dāng)前策略將事件循環(huán)設(shè)置當(dāng)前事件循環(huán):

asyncio.set_event_loop()

創(chuàng)建一個(gè)新的事件循環(huán):

asyncio.new_event_loop()

例子:

使用asyncio.get_running_loop()

1.2 事件循環(huán)方法集

  • 查閱

事件循環(huán)方法 相關(guān)的主要文檔段落 。生命周期

運(yùn)行一個(gè)期程/任務(wù)/可等待對(duì)象直到完成:

loop.run_until_complete()

一直運(yùn)行事件循環(huán):

loop.run_forever()

停止事件循環(huán):

loop.stop()

關(guān)閉事件循環(huán):

loop.close()

返回 True , 如果事件循環(huán)正在運(yùn)行:

loop.is_running()

返回 True ,如果事件循環(huán)已經(jīng)被關(guān)閉:

loop.is_closed()

關(guān)閉異步生成器:

await loop.shutdown_asyncgens()
  • 調(diào)試:

開啟或禁用調(diào)試模式:

loop.set_debug()

獲取當(dāng)前測(cè)試模式:

loop.get_debug()

調(diào)度回調(diào)函數(shù):

loop.call_soon()

盡快調(diào)用回調(diào):

loop.call_soon_threadsafe()

方法線程安全的變體:

	loop.call_soon() 

在給定時(shí)間 之后 調(diào)用回調(diào)函數(shù):

loop.call_later()

在 指定 時(shí)間調(diào)用回調(diào)函數(shù):

loop.call_at()
  • 線程/進(jìn)程池

在 concurrent.futures 執(zhí)行器中運(yùn)行一個(gè)獨(dú)占CPU或其它阻塞函數(shù):

await loop.run_in_executor()

設(shè)置 loop.run_in_executor() 默認(rèn)執(zhí)行器:

loop.set_default_executor()
  • 任務(wù)與期程

創(chuàng)建一個(gè) Future 對(duì)象:

loop.create_future()

將協(xié)程當(dāng)作 Task 一樣調(diào)度:

loop.create_task()

設(shè)置 loop.create_task() 使用的工廠,它將用來(lái)創(chuàng)建 Tasks:

loop.set_task_factory()

獲取 loop.create_task() 使用的工廠,它用來(lái)創(chuàng)建 Tasks:

loop.get_task_factory()

異步版的 socket.getaddrinfo():

await loop.getaddrinfo()

異步版的 socket.getnameinfo():

await loop.getnameinfo()
  • 網(wǎng)絡(luò)和IPC

打開一個(gè)TCP鏈接:

await loop.create_connection()

創(chuàng)建一個(gè)TCP服務(wù):

await loop.create_server()

打開一個(gè)Unix socket連接:

await loop.create_unix_connection()

創(chuàng)建一個(gè)Unix socket服務(wù):

await loop.create_unix_server()

將 socket 包裝成 (transport, protocol) 對(duì):

await loop.connect_accepted_socket()

打開一個(gè)數(shù)據(jù)報(bào)(UDP)連接:

await loop.create_datagram_endpoint()

通過(guò)傳輸通道發(fā)送一個(gè)文件:

await loop.sendfile()

將一個(gè)已建立的鏈接升級(jí)到TLS:

await loop.start_tls()

將管道讀取端包裝成 (transport, protocol) 對(duì):

await loop.connect_read_pipe()

將管道寫入端包裝成 (transport, protocol) 對(duì):

await loop.connect_write_pipe()
  • 套接字

從 socket 接收數(shù)據(jù):

await loop.sock_recv()

從 socket 接收數(shù)據(jù)到一個(gè)緩沖區(qū)中:

await loop.sock_recv_into()

發(fā)送數(shù)據(jù)到 socket :

await loop.sock_sendall()

鏈接 await loop.sock_connect() :

await loop.sock_connect()

接受一個(gè) socket 鏈接:

await loop.sock_accept()

利用 socket 發(fā)送一個(gè)文件:

await loop.sock_sendfile()

開始對(duì)一個(gè)文件描述符的可讀性的監(jiān)視:

loop.add_reader()

停止對(duì)一個(gè)文件描述符的可讀性的監(jiān)視:

loop.remove_reader()

開始對(duì)一個(gè)文件描述符的可寫性的監(jiān)視:

loop.add_writer()

停止對(duì)一個(gè)文件描述符的可寫性的監(jiān)視:

loop.remove_writer()
  • Unix信號(hào)

給 signal 添加一個(gè)處理回調(diào)函數(shù):

loop.add_signal_handler()

刪除 signal 的處理回調(diào)函數(shù):

loop.remove_signal_handler()
  • 子進(jìn)程集

衍生一個(gè)子進(jìn)程:

loop.subprocess_exec()

從終端命令衍生一個(gè)子進(jìn)程:

loop.subprocess_shell()
  • 錯(cuò)誤處理

調(diào)用異常處理器:

loop.call_exception_handler()

設(shè)置一個(gè)新的異常處理器:

loop.set_exception_handler()

獲取當(dāng)前異常處理器:

loop.get_exception_handler()

默認(rèn)異常處理器實(shí)現(xiàn):

loop.default_exception_handler()
  • 例子

    使用 asyncio.get_event_loop() 和 loop.run_forever().

    使用 loop.call_later().

    使用 loop.create_connection() 實(shí)現(xiàn) echo客戶端.

    使用 loop.create_connection() 去 鏈接socket.

    使用add_reader()監(jiān)聽FD(文件描述符)的讀取事件.

    使用loop.add_signal_handler().

    使用loop.add_signal_handler()。

1.3 傳輸

所有傳輸都實(shí)現(xiàn)以下方法:

transport.close()

關(guān)閉傳輸。

transport.is_closing()

返回 True ,如果傳輸正在關(guān)閉或已經(jīng)關(guān)閉。

transport.get_extra_info()

請(qǐng)求傳輸?shù)南嚓P(guān)信息。

transport.set_protocol()

設(shè)置一個(gè)新協(xié)議。

transport.get_protocol()

返回當(dāng)前協(xié)議。

傳輸可以接收數(shù)據(jù)(TCP和Unix鏈接,管道等)。它通過(guò) loop.create_connection(), loop.create_unix_connection(), loop.connect_read_pipe() 等方法返回。

1.3.1 讀取傳輸

返回 True ,如果傳輸正在接收:

transport.is_reading()

暫停接收:

transport.pause_reading()

繼續(xù)接收:

transport.resume_reading()

傳輸可以發(fā)送數(shù)據(jù)(TCP和Unix鏈接,管道等)。它通過(guò) loop.create_connection(), loop.create_unix_connection(), loop.connect_write_pipe() 等方法返回。

1.3.2 寫入傳輸

向傳輸寫入數(shù)據(jù):

transport.write()

向傳輸寫入緩沖:

transport.write()

返回 True ,如果傳輸支持發(fā)送 EOF:

transport.can_write_eof()

在沖洗已緩沖的數(shù)據(jù)后關(guān)閉傳輸和發(fā)送EOF:

transport.write_eof()

立即關(guān)閉傳輸:

transport.abort()

返回寫入流控制的高位標(biāo)記位和低位標(biāo)記位:

transport.get_write_buffer_size()

設(shè)置新的寫入流控制的高位標(biāo)記位和低位標(biāo)記位:

transport.set_write_buffer_limits()

由 loop.create_datagram_endpoint() 返回的傳輸:

1.3.3 數(shù)據(jù)報(bào)傳輸

發(fā)送數(shù)據(jù)到遠(yuǎn)程鏈接端:

transport.sendto()

立即關(guān)閉傳輸:

transport.abort()

基于子進(jìn)程的底層抽象傳輸,它由 loop.subprocess_exec() 和 loop.subprocess_shell() 返回:

1.3.4 子進(jìn)程傳輸

返回子進(jìn)程的進(jìn)程ID:

transport.get_pid()

返回請(qǐng)求通信管道 (stdin, stdout, 或 stderr)的傳輸:

transport.get_pipe_transport()

返回子進(jìn)程的返回代號(hào):

transport.get_returncode()

殺死子進(jìn)程:

transport.kill()

發(fā)送一個(gè)信號(hào)到子進(jìn)程:

transport.send_signal()

停止子進(jìn)程:

transport.terminate()

殺死子進(jìn)程并關(guān)閉所有管道:

transport.close()

1.3.5 協(xié)議

協(xié)議類可以由下面 回調(diào)方法 實(shí)現(xiàn):

連接建立時(shí)被調(diào)用:

callback connection_made()

連接丟失或關(guān)閉時(shí)將被調(diào)用:

callback connection_lost()

傳輸?shù)木彌_區(qū)超過(guò)高位標(biāo)記位時(shí)被調(diào)用:

callback pause_writing()

傳輸?shù)木彌_區(qū)傳送到低位標(biāo)記位時(shí)被調(diào)用:

callback resume_writing()

1.3.6 流協(xié)議 (TCP, Unix 套接字, 管道)

接收到數(shù)據(jù)時(shí)被調(diào)用:

callback data_received()

接收到EOF時(shí)被調(diào)用:

callback eof_received()

1.3.7 緩沖流協(xié)議

調(diào)用后會(huì)分配新的接收緩沖區(qū):

callback get_buffer()

用接收的數(shù)據(jù)更新緩沖區(qū)時(shí)被調(diào)用:

callback buffer_updated()

接收到EOF時(shí)被調(diào)用:

callback eof_received()

1.3.8 數(shù)據(jù)報(bào)協(xié)議

接收到數(shù)據(jù)報(bào)時(shí)被調(diào)用:

callback datagram_received()

前一個(gè)發(fā)送或接收操作引發(fā) OSError 時(shí)被調(diào)用:

callback error_received()

1.3.9 子進(jìn)程協(xié)議

子進(jìn)程向 stdout 或 stderr 管道寫入數(shù)據(jù)時(shí)被調(diào)用:

callback pipe_data_received()

與子進(jìn)程通信的其中一個(gè)管道關(guān)閉時(shí)被調(diào)用:

callback pipe_connection_lost()

子進(jìn)程退出時(shí)被調(diào)用:

callback process_exited()

事件循環(huán)策略

策略是改變 asyncio.get_event_loop() 這類函數(shù)行為的一個(gè)底層機(jī)制。更多細(xì)節(jié)可以查閱 策略部分。

訪問(wèn)策略

asyncio.get_event_loop_policy()

返回當(dāng)前進(jìn)程域的策略。

asyncio.set_event_loop_policy()

設(shè)置一個(gè)新的進(jìn)程域策略。

AbstractEventLoopPolicy

策略對(duì)象的基類。

2 高層 API索引

列舉了所有能用于 async/wait 的高層級(jí)asyncio API 集。

2.1 任務(wù)

運(yùn)行異步程序,創(chuàng)建Task對(duì)象,等待多件事運(yùn)行超時(shí)的公共集。

run()

創(chuàng)建事件循環(huán),運(yùn)行一個(gè)協(xié)程,關(guān)閉事件循環(huán)。

create_task()

啟動(dòng)一個(gè)asyncio的Task對(duì)象。

await sleep()

休眠幾秒。

await gather()

并發(fā)執(zhí)行所有事件的調(diào)度和等待。

await wait_for()

有超時(shí)控制的運(yùn)行。

await shield()

屏蔽取消操作

await wait()

完成情況的監(jiān)控器

current_task()

返回當(dāng)前Task對(duì)象

all_tasks()

返回事件循環(huán)中所有的task對(duì)象。

Task

Task對(duì)象

to_thread()

在不同的 OS 線程中異步地運(yùn)行一個(gè)函數(shù)。

run_coroutine_threadsafe()

從其他OS線程中調(diào)度一個(gè)協(xié)程。

for in as_completed()

用 for 循環(huán)監(jiān)控完成情況。

例子

使用 asyncio.gather() 并行運(yùn)行. 使用 asyncio.wait_for() 強(qiáng)制超時(shí).

撤銷協(xié)程.

	asyncio.sleep() 的用法.

請(qǐng)主要參閱 協(xié)程與任務(wù)文檔.

2 隊(duì)列集

隊(duì)列集被用于多個(gè)異步Task對(duì)象的運(yùn)行調(diào)度,實(shí)現(xiàn)連接池以及發(fā)布/訂閱模式。

先進(jìn)先出隊(duì)列

Queue

優(yōu)先級(jí)隊(duì)列:

  PriorityQueue

后進(jìn)先出隊(duì)列:

LifoQueue

使用 asyncio.Queue 在多個(gè)并發(fā)任務(wù)間分配工作量.

2.1 子進(jìn)程集

用于生成子進(jìn)程和運(yùn)行shell命令的工具包。

創(chuàng)建一個(gè)子進(jìn)程:

await create_subprocess_exec()

運(yùn)行一個(gè)shell命令:

await create_subprocess_shell()

比如使用 它執(zhí)行一個(gè)shell命令. 請(qǐng)參閱 子進(jìn)程 APIs 相關(guān)文檔.

3 同步

能被用于Task對(duì)象集的,類似線程的同步基元組件。

互斥鎖:

Lock

事件對(duì)象:

Event

條件對(duì)象:

Condition

信號(hào)量:

Semaphore

有界的信號(hào)量:

BoundedSemaphore

小結(jié)

使用異步庫(kù)的例子

asyncio.Event 的用法.

請(qǐng)參閱asyncio文檔 synchronization primitives.

異常

asyncio.TimeoutError

類似 wait_for() 等函數(shù)在超時(shí)時(shí)候被引發(fā)。請(qǐng)注意 asyncio.TimeoutError 與內(nèi)建異常 TimeoutError 無(wú)關(guān)。

asyncio.CancelledError

當(dāng)一個(gè)Task對(duì)象被取消的時(shí)候被引發(fā)。請(qǐng)參閱 Task.cancel()。 在取消請(qǐng)求發(fā)生的運(yùn)行代碼中如何處理CancelledError異常.

請(qǐng)參閱完整的 asyncio 專用異常 列表.

本文代碼例子

以上就是java異步編程之一文看完其異步函數(shù)表的詳細(xì)內(nèi)容,更多關(guān)于java異步函數(shù)表的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Spring Boot 2 整合 QuartJob 實(shí)現(xiàn)定時(shí)器實(shí)時(shí)管理功能

    Spring Boot 2 整合 QuartJob 實(shí)現(xiàn)定時(shí)器實(shí)時(shí)管理功能

    Quartz是一個(gè)完全由java編寫的開源作業(yè)調(diào)度框架,形式簡(jiǎn)易,功能強(qiáng)大。接下來(lái)通過(guò)本文給大家分享Spring Boot 2 整合 QuartJob 實(shí)現(xiàn)定時(shí)器實(shí)時(shí)管理功能,感興趣的朋友一起看看吧
    2019-11-11
  • Java中實(shí)現(xiàn)訂單超時(shí)自動(dòng)取消功能(最新推薦)

    Java中實(shí)現(xiàn)訂單超時(shí)自動(dòng)取消功能(最新推薦)

    本文介紹了Java中實(shí)現(xiàn)訂單超時(shí)自動(dòng)取消功能的幾種方法,包括定時(shí)任務(wù)、JDK延遲隊(duì)列、Redis過(guò)期監(jiān)聽、Redisson分布式延遲隊(duì)列、RocketMQ延遲消息和RabbitMQ死信隊(duì)列,每種方法都有其優(yōu)缺點(diǎn),可以根據(jù)具體需求選擇合適的方法,感興趣的朋友一起看看吧
    2025-02-02
  • Java中import導(dǎo)入的用法說(shuō)明

    Java中import導(dǎo)入的用法說(shuō)明

    這篇文章主要介紹了Java中import導(dǎo)入的用法說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • 詳解Spring Retry實(shí)現(xiàn)原理

    詳解Spring Retry實(shí)現(xiàn)原理

    這篇文章主要介紹了詳解Spring Retry實(shí)現(xiàn)原理,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-04-04
  • Spring測(cè)試基本的控制器實(shí)戰(zhàn)示例

    Spring測(cè)試基本的控制器實(shí)戰(zhàn)示例

    這篇文章主要為大家介紹了Spring測(cè)試基本的控制器實(shí)戰(zhàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-10-10
  • 深入理解spring boot異步調(diào)用方式@Async

    深入理解spring boot異步調(diào)用方式@Async

    Spring為任務(wù)調(diào)度與異步方法執(zhí)行提供了注解支持。通過(guò)在方法上設(shè)置@Async注解,可使得方法被異步調(diào)用。下面這篇文章主要給大家介紹了關(guān)于spring boot異步調(diào)用方式@Async的相關(guān)資料,需要的朋友可以參考下。
    2017-07-07
  • jdk15的安裝與配置全過(guò)程記錄

    jdk15的安裝與配置全過(guò)程記錄

    這篇文章主要給大家介紹了關(guān)于jdk15的安裝與配置,文中通過(guò)圖文介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • springBoot項(xiàng)目如何實(shí)現(xiàn)啟動(dòng)多個(gè)實(shí)例

    springBoot項(xiàng)目如何實(shí)現(xiàn)啟動(dòng)多個(gè)實(shí)例

    這篇文章主要介紹了springBoot項(xiàng)目如何實(shí)現(xiàn)啟動(dòng)多個(gè)實(shí)例的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • MyBatis主鍵自增的兩種實(shí)現(xiàn)方法

    MyBatis主鍵自增的兩種實(shí)現(xiàn)方法

    本文主要介紹了MyBatis主鍵自增的兩種實(shí)現(xiàn)方法,主要包括注解方式或配置文件方式來(lái)實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2024-01-01
  • Jmeter跨線程組共享cookie過(guò)程圖解

    Jmeter跨線程組共享cookie過(guò)程圖解

    這篇文章主要介紹了Jmeter跨線程組共享cookie過(guò)程圖解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-07-07

最新評(píng)論

梓潼县| 磐石市| 墨玉县| 白水县| 泰兴市| 柏乡县| 松阳县| 旬阳县| 靖州| 清苑县| 闸北区| 平果县| 万源市| 宝兴县| 无锡市| 南陵县| 叶城县| 贵南县| 舟曲县| 巴中市| 锦州市| 论坛| 张掖市| 石棉县| 门头沟区| 瓮安县| 山东省| 建平县| 奇台县| 金坛市| 石棉县| 台南市| 阳山县| 德惠市| 武隆县| 武义县| 彰化县| 西青区| 西丰县| 浦东新区| 儋州市|