异步线程的两种方法Callback 和 Future&Runnable

●介绍 有时候执行一个任务需要很长时间,单线程下线程会处于阻塞状态。这个时候我们会考虑一种非阻塞的处理模式。非阻塞任务在任何编程语言里都必不可少,Java也不例外。多线程就是一个很好的解决办法。 但是多线程是异步处理,异步就意味着不知道处理结果,如果我们需要知道处理结果的时候应该怎么办呢? 笔者介绍下面两种方法 ●Callback  回调一般是异步处理的一种技术。一个回调是被传递到并且执行完该方法。 这种方式只能异步回调,如果需要同步等待线程处理结果可以使用下面介绍的Futures import java.util.Map; public interface ICallback { public void callback(Map<String, Object> params); }   import java.util.HashMap; import java.util.Map; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; public class NettyTest { static ExecutorService es = Executors.newFixedThreadPool(2); public static void doStm(final ICallback callback) { // 初始化一个线程 Thread t = new Thread() { public void run() …