异步实现类如下:
public class MyEvent {
public void testSleep(EventListener listener) {
new Thread(new Runnable() {
@Override
public void run() {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
listener.onEvent("Hello");
}
}).start();
}
//异步执行回调
interface EventListener {
void onEvent(String msg);
}
}
测试类:
public class MainTest {
private static final Object object = new Object();
public static void main(String[] args) {
System.out.println("Start ...");
MyEvent event = new MyEvent();
synchronized (object) {
event.testSleep(new MyEvent.EventListener() {
@Override
public void onEvent(String msg) {
System.out.println("Message ..." + msg);
synchronized (object) {
object.notify();
}
}
});
try {
object.wait(2000000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
System.out.println("End ...");
}
}
主要注意点,异步实现中由于是与主线程交互,必须为线程执行。如遇接口可以使用线程调用接口。