91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

java異步函數怎么使用

發布時間:2023-01-28 15:36:34 來源:億速云 閱讀:99 作者:iii 欄目:開發技術

這篇文章主要介紹了java異步函數怎么使用的相關知識,內容詳細易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇java異步函數怎么使用文章都會有所收獲,下面我們一起來看看吧。

    1 低層級 asyncio 索引

    低層級 API 索引¶ 列出所有低層級的 asyncio API。

    1.1 獲取事件循環

    獲取當前運行的事件循環 首選 函數:

    asyncio.get_running_loop()

    獲得一個事件循環實例(當前或通過策略):

    asyncio.get_event_loop()

    通過當前策略將事件循環設置當前事件循環:

    asyncio.set_event_loop()

    創建一個新的事件循環:

    asyncio.new_event_loop()

    例子:

    使用asyncio.get_running_loop()

    1.2 事件循環方法集

    • 查閱

    事件循環方法 相關的主要文檔段落 。生命周期

    運行一個期程/任務/可等待對象直到完成:

    loop.run_until_complete()

    一直運行事件循環:

    loop.run_forever()

    停止事件循環:

    loop.stop()

    關閉事件循環:

    loop.close()

    返回 True , 如果事件循環正在運行:

    loop.is_running()

    返回 True ,如果事件循環已經被關閉:

    loop.is_closed()

    關閉異步生成器:

    await loop.shutdown_asyncgens()
    • 調試:

    開啟或禁用調試模式:

    loop.set_debug()

    獲取當前測試模式:

    loop.get_debug()

    調度回調函數:

    loop.call_soon()

    盡快調用回調:

    loop.call_soon_threadsafe()

    方法線程安全的變體:

    	loop.call_soon()

    在給定時間 之后 調用回調函數:

    loop.call_later()

    在 指定 時間調用回調函數:

    loop.call_at()
    • 線程/進程池

    在 concurrent.futures 執行器中運行一個獨占CPU或其它阻塞函數:

    await loop.run_in_executor()

    設置 loop.run_in_executor() 默認執行器:

    loop.set_default_executor()
    • 任務與期程

    創建一個 Future 對象:

    loop.create_future()

    將協程當作 Task 一樣調度:

    loop.create_task()

    設置 loop.create_task() 使用的工廠,它將用來創建 Tasks:

    loop.set_task_factory()

    獲取 loop.create_task() 使用的工廠,它用來創建 Tasks:

    loop.get_task_factory()

    異步版的 socket.getaddrinfo():

    await loop.getaddrinfo()

    異步版的 socket.getnameinfo():

    await loop.getnameinfo()
    • 網絡和IPC


    打開一個TCP鏈接:

    await loop.create_connection()

    創建一個TCP服務:

    await loop.create_server()

    打開一個Unix socket連接:

    await loop.create_unix_connection()

    創建一個Unix socket服務:

    await loop.create_unix_server()

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

    await loop.connect_accepted_socket()

    打開一個數據報(UDP)連接:

    await loop.create_datagram_endpoint()

    通過傳輸通道發送一個文件:

    await loop.sendfile()

    將一個已建立的鏈接升級到TLS:

    await loop.start_tls()

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

    await loop.connect_read_pipe()

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

    await loop.connect_write_pipe()
    • 套接字

    從 socket 接收數據:

    await loop.sock_recv()

    從 socket 接收數據到一個緩沖區中:

    await loop.sock_recv_into()

    發送數據到 socket :

    await loop.sock_sendall()

    鏈接 await loop.sock_connect() :

    await loop.sock_connect()

    接受一個 socket 鏈接:

    await loop.sock_accept()

    利用 socket 發送一個文件:

    await loop.sock_sendfile()

    開始對一個文件描述符的可讀性的監視:

    loop.add_reader()

    停止對一個文件描述符的可讀性的監視:

    loop.remove_reader()

    開始對一個文件描述符的可寫性的監視:

    loop.add_writer()

    停止對一個文件描述符的可寫性的監視:

    loop.remove_writer()
    • Unix信號

    給 signal 添加一個處理回調函數:

    loop.add_signal_handler()

    刪除 signal 的處理回調函數:

    loop.remove_signal_handler()
    • 子進程集

    衍生一個子進程:

    loop.subprocess_exec()

    從終端命令衍生一個子進程:

    loop.subprocess_shell()
    • 錯誤處理

    調用異常處理器:

    loop.call_exception_handler()

    設置一個新的異常處理器:

    loop.set_exception_handler()

    獲取當前異常處理器:

    loop.get_exception_handler()

    默認異常處理器實現:

    loop.default_exception_handler()
    • 例子

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

      使用 loop.call_later().

      使用 loop.create_connection() 實現 echo客戶端.

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

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

      使用loop.add_signal_handler().

      使用loop.add_signal_handler()。

    1.3 傳輸

    所有傳輸都實現以下方法:

    transport.close()

    關閉傳輸。

    transport.is_closing()

    返回 True ,如果傳輸正在關閉或已經關閉。

    transport.get_extra_info()

    請求傳輸的相關信息。

    transport.set_protocol()

    設置一個新協議。

    transport.get_protocol()

    返回當前協議。

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

    1.3.1 讀取傳輸

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

    transport.is_reading()

    暫停接收:

    transport.pause_reading()

    繼續接收:

    transport.resume_reading()

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

    1.3.2 寫入傳輸

    向傳輸寫入數據:

    transport.write()

    向傳輸寫入緩沖:

    transport.write()

    返回 True ,如果傳輸支持發送 EOF:

    transport.can_write_eof()

    在沖洗已緩沖的數據后關閉傳輸和發送EOF:

    transport.write_eof()

    立即關閉傳輸:

    transport.abort()

    返回寫入流控制的高位標記位和低位標記位:

    transport.get_write_buffer_size()

    設置新的寫入流控制的高位標記位和低位標記位:

    transport.set_write_buffer_limits()

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

    1.3.3 數據報傳輸

    發送數據到遠程鏈接端:

    transport.sendto()

    立即關閉傳輸:

    transport.abort()

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

    1.3.4 子進程傳輸

    返回子進程的進程ID:

    transport.get_pid()

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

    transport.get_pipe_transport()

    返回子進程的返回代號:

    transport.get_returncode()

    殺死子進程:

    transport.kill()

    發送一個信號到子進程:

    transport.send_signal()

    停止子進程:

    transport.terminate()

    殺死子進程并關閉所有管道:

    transport.close()
    1.3.5 協議

    協議類可以由下面 回調方法 實現:

    連接建立時被調用:

    callback connection_made()

    連接丟失或關閉時將被調用:

    callback connection_lost()

    傳輸的緩沖區超過高位標記位時被調用:

    callback pause_writing()

    傳輸的緩沖區傳送到低位標記位時被調用:

    callback resume_writing()
    1.3.6 流協議 (TCP, Unix 套接字, 管道)

    接收到數據時被調用:

    callback data_received()

    接收到EOF時被調用:

    callback eof_received()
    1.3.7 緩沖流協議

    調用后會分配新的接收緩沖區:

    callback get_buffer()

    用接收的數據更新緩沖區時被調用:

    callback buffer_updated()

    接收到EOF時被調用:

    callback eof_received()
    1.3.8 數據報協議

    接收到數據報時被調用:

    callback datagram_received()

    前一個發送或接收操作引發 OSError 時被調用:

    callback error_received()
    1.3.9 子進程協議

    子進程向 stdout 或 stderr 管道寫入數據時被調用:

    callback pipe_data_received()

    與子進程通信的其中一個管道關閉時被調用:

    callback pipe_connection_lost()

    子進程退出時被調用:

    callback process_exited()

    事件循環策略

    策略是改變 asyncio.get_event_loop() 這類函數行為的一個底層機制。更多細節可以查閱 策略部分。

    訪問策略

    asyncio.get_event_loop_policy()

    返回當前進程域的策略。

    asyncio.set_event_loop_policy()

    設置一個新的進程域策略。

    AbstractEventLoopPolicy

    策略對象的基類。

    2 高層 API索引

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

    2.1 任務

    運行異步程序,創建Task對象,等待多件事運行超時的公共集。

    run()

    創建事件循環,運行一個協程,關閉事件循環。

    create_task()

    啟動一個asyncio的Task對象。

    await sleep()

    休眠幾秒。

    await gather()

    并發執行所有事件的調度和等待。

    await wait_for()

    有超時控制的運行。

    await shield()

    屏蔽取消操作

    await wait()

    完成情況的監控器

    current_task()

    返回當前Task對象

    all_tasks()

    返回事件循環中所有的task對象。

    Task

    Task對象

    to_thread()

    在不同的 OS 線程中異步地運行一個函數。

    run_coroutine_threadsafe()

    從其他OS線程中調度一個協程。

    for in as_completed()

    用 for 循環監控完成情況。

    例子

    使用 asyncio.gather() 并行運行. 使用 asyncio.wait_for() 強制超時.

    撤銷協程.

    	asyncio.sleep() 的用法.

    2 隊列集

    隊列集被用于多個異步Task對象的運行調度,實現連接池以及發布/訂閱模式。

    先進先出隊列

    Queue

    優先級隊列:

      PriorityQueue

    后進先出隊列:

    LifoQueue

    使用 asyncio.Queue 在多個并發任務間分配工作量.

    2.1 子進程集

    用于生成子進程和運行shell命令的工具包。

    創建一個子進程:

    await create_subprocess_exec()

    運行一個shell命令:

    await create_subprocess_shell()

    比如使用 它執行一個shell命令. 請參閱 子進程 APIs 相關文檔.

    3 同步

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

    互斥鎖:

    Lock

    事件對象:

    Event

    條件對象:

    Condition

    信號量:

    Semaphore

    有界的信號量:

    BoundedSemaphore

    小結

    使用異步庫的例子

    asyncio.Event 的用法.

    異常

    asyncio.TimeoutError

    類似 wait_for() 等函數在超時時候被引發。請注意 asyncio.TimeoutError 與內建異常 TimeoutError 無關。

    asyncio.CancelledError

    當一個Task對象被取消的時候被引發。請參閱 Task.cancel()。 在取消請求發生的運行代碼中如何處理CancelledError異常。

    關于“java異步函數怎么使用”這篇文章的內容就介紹到這里,感謝各位的閱讀!相信大家對“java異步函數怎么使用”知識都有一定的了解,大家如果還想學習更多知識,歡迎關注億速云行業資訊頻道。

    向AI問一下細節

    免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

    AI

    宜章县| 息烽县| 马公市| 文成县| 修水县| 二连浩特市| 茶陵县| 杭锦旗| 连平县| 辉南县| 宁陕县| 咸丰县| 德格县| 石林| 普陀区| 叶城县| 利辛县| 陆河县| 鲜城| 河西区| 藁城市| 铁岭县| 都兰县| 洪湖市| 九寨沟县| 盈江县| 石屏县| 古浪县| 延安市| 逊克县| 高州市| 越西县| 屯留县| 南木林县| 剑川县| 柯坪县| 上林县| 磴口县| 凌云县| 凤山县| 民权县|