在这个msdn页面上,我读到:
应用程序不能为特定请求混合同步和异步方法。如果调用BeginGetRequestStream方法,则必须使用BeginGetResponse方法检索响应。
反之亦然吗?如果调用BegingetResponse
异步读取响应,是否还应该使用BegingetRequestStream
编写请求?
我的请求很小(100-1000个字符),响应可以很大。Jeffrey Richter的这篇文章似乎是说,在小负载的情况下,它可以同步完成(并且不需要设置ContentLength
属性)。那是正确的吗?
从技术上讲不,您可以同步发送请求并异步处理响应,反之亦然,这取决于您的需求,但通常不建议这样做。为了保持一致性,选择一种最能满足您需求的方法,并使用相同的方法实现请求/响应
可以混合使用方法的一个示例是,例如,当您发送一个可能需要一些时间才能完成的报告请求时。您希望同步发送请求,因为您希望确保在继续之前完全发送请求(例如,如果从windows应用程序发送,则考虑连接问题),但异步处理响应,因为您不希望在等待响应返回时绑定UI。即便如此,我仍然建议您在发送/接收两个方面的方法保持一致。
我正在尝试设置log4j2以使用异步记录器将所有消息记录到滚动文件中。 是否有一种方法可以创建另一个记录程序来捕获所有事件?还有别的想法吗? 下面是我的log4j2.xml:
使用log4j2,我很难让同步记录器和异步记录器一起工作。 从这里以Apache文档(标题为混合同步和异步记录器)为例,运行下面的应用程序将简单地创建日志文件,但不向其写入任何内容。我也不确定添加两个记录器指向同一个appender,但它的Apache留档,所以我假设这是好的。 LOG4J2配置 pom.xml 应用 但是,如果我更改log4j2配置并修改loggers元素以读取以下内容,我将在日
同步调用异步方法最安全的方法是什么?
我有点困惑。请看看下面的代码。 我确信调用此序列是可能的。 虽然我仍然有一个小小的困惑,但我们可以很容易地看到也调用方法,这是一个静态方法。方法 是调用非同步静态方法的静态同步方法。当 thread-2 获得类级锁时,为什么从 Thread-1 调用 没有被阻止? 我只是在逻辑上感到困惑,如果一个线程获得类级锁定,则该类其他非同步静态方法保持打开状态,以便从其他方法(实例方法)调用。为什么?
问题内容: 在Java中制作异步方法的同步版本的最佳方法是什么? 假设您有一个使用以下两种方法的类: 您将如何实现直到任务完成才返回的同步? 问题答案: 看看CountDownLatch。您可以使用以下类似方式模拟所需的同步行为: 您还可以通过2个参与者使用相同的行为,如下所示: 但是,如果您可以控制I 的源代码,建议您重新设计它以返回一个对象。这样,您可以在需要时轻松地在异步/同步行为之间进行切
如果我有一个长时间运行的任务是CPU绑定的(假设它正在进行大量困难的数学运算),那么异步运行该任务一定会阻塞某个线程,对吗?必须要做些实际的计算。如果我等待它,那么某些线程将被阻塞。 一个真正的异步方法的例子是什么?它们实际上是如何工作的?这些操作是否仅限于利用某些硬件功能的I/O操作,从而不会阻塞任何线程?