我正在尝试创建一个回调函数:
下面是我的代码:
@FunctionalInterface
interface OnDumpEventListener {
void onDumpEvent();
}
class SynchronousCallback {
void doStuff(OnDumpEventListener callback) {
System.out.println("i'm doing my work");
if (callback != null) {
callback.onDumpEvent();
}
}
}
class AsynchronousCallback {
void doStuff(OnDumpEventListener callback) {
System.out.println("i'm doing my work");
try {
wait(50);
} catch (InterruptedException e) {
e.printStackTrace();
}
if (callback != null) {
new Thread(() -> {
callback.onDumpEvent();
}).start();
}
}
}
public class Main {
public static void main(String[] args) {
SynchronousCallback x = new SynchronousCallback();
x.doStuff(() -> System.out.println("callback doing his work"));
AsynchronousCallback y = new AsynchronousCallback();
y.doStuff(() -> System.out.println("callback doing his work asynch"));
}
}
但当我运行这段代码时,我得到了这样的结果。
i'm doing my work
callback doing his work
i'm doing my work
Exception in thread "main" java.lang.IllegalMonitorStateException
at java.base/java.lang.Object.wait(Native Method)
at callbacks.AsynchronousCallback.doStuff(Main.java:22)
at callbacks.Main.main(Main.java:41)
有人能告诉我为什么我会有这个例外吗?
方法wait/notify/notifyAll必须在synchronized块内调用。
问题内容: 同步和异步AJAX调用有什么区别?何时使用同步以及何时异步? 问题答案: 在最基本的级别上,当您希望调用在后台发生时,您可以使用异步模式,而当您希望代码等待直到调用完成时,则可以使用同步模式。 异步模式是AJAX调用的常用方法,因为通常在事件上附加一个回调函数,以便您可以在服务器端数据就绪时进行响应,而不必等待数据到达。
我有endpoint,它可以返回同步和异步结果 如何刻意返回某物,即同步?
本文向大家介绍jquery中的ajax同步和异步详解,包括了jquery中的ajax同步和异步详解的使用技巧和注意事项,需要的朋友参考一下 之前一直在写JQUERY代码的时候遇到AJAX加载数据都需要考虑代码运行顺序问题。最近的项目用了到AJAX同步。这个同步的意思是当JS代码加载到当前AJAX的时候会把页面里所有的代码停止加载,页面出去假死状态,当这个AJAX执行完毕后才会继续运行其他代码页面假
问题内容: 我该如何做这项工作 我试图从异步之一获取同步功能,我需要它来使用FreeTds异步查询作为同步之一 问题答案: 使用deasync-用C ++编写的模块,它将Node.js事件循环暴露给JavaScript。该模块还公开了一个函数,该函数阻止后续代码,但不阻止整个线程,也不引起繁忙的等待。您可以将函数放入循环中:
本文向大家介绍详解java 三种调用机制(同步、回调、异步),包括了详解java 三种调用机制(同步、回调、异步)的使用技巧和注意事项,需要的朋友参考一下 1:同步调用:一种阻塞式调用,调用方要等待对方执行完毕才返回,它是一种单向调用 2:回调:一种双向调用模式,也就是说,被调用方在接口被调用时也会调用对方的接口; 3:异步调用:一种类似消息或事件的机制,不过它的调用方向刚好相反,接口的服务在收到
本文向大家介绍举例说明同步和异步相关面试题,主要包含被问及举例说明同步和异步时的应答技巧和注意事项,需要的朋友参考一下 考察点:线程 如果系统中存在临界资源(资源数量少于竞争资源的线程数量的资源),例如正在写的数据以后可能被另一个线程读到,或者正在读的数据可能已经被另一个线程写过了,那么这些数据就必须进行同步存取(数据库操作中的排他锁就是最好的例子)。当应用程序在对象上调用了一个需要花费很长时间来