iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >java异步函数怎么使用
  • 386
分享到

java异步函数怎么使用

2023-07-05 01:07:07 386人浏览 安东尼
摘要

这篇文章主要介绍了java异步函数怎么使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇java异步函数怎么使用文章都会有所收获,下面我们一起来看看吧。1 低层级 asyncio 索引低层级 api 索引&am

这篇文章主要介绍了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()

    打开一个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异步函数怎么使用”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注编程网精选频道。

    --结束END--

    本文标题: java异步函数怎么使用

    本文链接: https://www.lsjlt.com/news/348677.html(转载时请注明来源链接)

    有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

    本篇文章演示代码以及资料文档资料下载

    下载Word文档到电脑,方便收藏和打印~

    下载Word文档
    猜你喜欢
    • java异步函数怎么使用
      这篇文章主要介绍了java异步函数怎么使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇java异步函数怎么使用文章都会有所收获,下面我们一起来看看吧。1 低层级 asyncio 索引低层级 API 索引&am...
      99+
      2023-07-05
    • JavaScript异步函数怎么使用
      这篇文章主要介绍了JavaScript异步函数怎么使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇JavaScript异步函数怎么使用文章都会有所收获,下面我们一起来看看吧。...
      99+
      2024-04-02
    • js异步函数async/awit怎么使用
      异步函数(async/await) 是一种用于处理 JavaScript 异步操作的语法糖,它建立在 Promise 基础之上,使得...
      99+
      2023-09-29
      js
    • Python混合怎么使用同步和异步函数
      在协程函数中调用同步函数在协程函数中直接调用同步函数会阻塞事件循环,从而影响整个程序的性能。我们先来看一个例子:以下是使用异步 Web 框架 FastAPI 写的一个例子,FastAPI 是比较快,但不正确的操作将会变得很慢。import ...
      99+
      2023-05-14
      Python
    • JS的异步函数async/await怎么使用
      这篇“JS的异步函数async/await怎么使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“JS的异步函数async/a...
      99+
      2023-07-05
    • Typescrip异步函数Promise使用方式
      目录Typescrip异步函数Promisetypescript- typescrip与react对象的类型数组类型函数类型类型断言内置对象泛型React 中使用Typescrip异...
      99+
      2024-04-02
    • c++异步回调函数怎么调用
      在C++中,异步回调函数通常使用函数指针或者函数对象来表示。下面是调用异步回调函数的几种常见方法:1. 使用函数指针:cppvoid...
      99+
      2023-10-20
      c++
    • python异步函数怎么实现
      在Python中,可以使用asyncio模块来实现异步函数。异步函数通常以async关键字声明,其中包含await关键字来等待其他异...
      99+
      2023-09-29
      python
    • Node.js中如何使用异步Generator函数
      本篇文章给大家分享的是有关Node.js中如何使用异步Generator函数,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。HTTP 框架分类首...
      99+
      2024-04-02
    • 怎么用Async函数简化异步代码
      今天就跟大家聊聊有关怎么用Async函数简化异步代码,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。Promise 在 JavaScript 上发布之...
      99+
      2024-04-02
    • Python混合如何使用同步和异步函数
      这篇文章主要介绍“Python混合如何使用同步和异步函数”,在日常操作中,相信很多人在Python混合如何使用同步和异步函数问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python混合如何使用同步和异步函数...
      99+
      2023-07-06
    • java异步编程之一文看完其异步函数表
      目录1 低层级 asyncio 索引1.1 获取事件循环1.2 事件循环方法集1.3 传输1.3.1 读取传输1.3.2 写入传输1.3.3 数据报传输1.3.4 子进程传输1.3....
      99+
      2023-01-28
      java异步函数表 java异步
    • 怎么在javascript中异步回调函数
      这篇文章将为大家详细讲解有关怎么在javascript中异步回调函数,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。1、说明JavaScript代码本质上总是阻塞的。但是这种阻塞性使我们无法在...
      99+
      2023-06-15
    • 如何使用Golang函数处理异步操作?
      使用函数处理异步操作分为三个步骤:创建协程以并发执行代码块。使用信道在协程之间发送数据,例如结果或错误。使用协程执行异步任务并从信道接收结果。 如何使用 Golang 函数处理异步操作...
      99+
      2024-04-13
      golang 异步操作
    • java异步调用怎么实现
      在Java中,可以通过多线程、回调接口、Future和CompletableFuture等方式来实现异步调用。1. 多线程:创建一个...
      99+
      2023-09-16
      java
    • Java Math.round函数怎么使用
      Math.round函数是Java的一个数学函数,用于四舍五入取整数。Math.round函数有两种用法:1. 对于float或do...
      99+
      2023-08-14
      Java Math.round
    • java怎么实现异步调用
      在Java中,可以使用多种方法实现异步调用,下面列举了其中的两种常用方式: 使用线程池:可以使用Java中的`ExecutorSe...
      99+
      2023-10-25
      java
    • java charat函数怎么使用
      在Java中,charAt方法用于返回指定位置的字符。它的使用方式如下:1. 首先,需要有一个字符串对象,例如:```javaStr...
      99+
      2023-09-22
      java
    • Python 实现异步调用函数
      async_call.py #coding:utf-8 from threading import Thread def async_call(fn): def wrapper(*args, **kwargs): ...
      99+
      2023-01-31
      函数 Python
    • PHP8.0中的异步函数
      PHP8.0是PHP语言的最新版本,在其中新增了一些非常重要的功能,其中最为突出的一项就是异步函数的支持。本文将着重介绍PHP8.0中的异步函数,包括异步编程的概念、优点以及在PHP8.0中的具体应用。异步编程概念在传统的编程方式中,程序是...
      99+
      2023-05-14
      编程 PHP 异步函数
    软考高级职称资格查询
    编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
    • 官方手机版

    • 微信公众号

    • 商务合作