java多线程异步并行-ios串行并行同步异步
发布时间:2023-02-09 16:28 浏览次数:次 作者:佚名
本文主要讲解生产环境中遇到的异步加载数据问题及相应的解决方案。
系统登录时,需要根据用户ID生成一些与当前用户相关的数据,存入缓存中。 如果不考虑异步调用,整个登录过程可能需要将近8秒的时间,这肯定是不能接受的。 所以需要在登录的时候将这些与登录无关的数据操作提取出来java多线程异步并行,放在一个异步的过程中实现。
在Java程序中,如果要实现异步调用方法的功能,需要通过线程来实现,即实现java.lang.Runnable接口或者继承java.lang.Thread类。 在这里,您选择实现 Runnable 接口。 考虑到是生产环境java多线程异步并行,还需要用到ThreadPoolExecutor线程池。 我们直接看代码示例:
1.定义线程池实例服务
public class ThreadPoolManager {
public static ThreadPoolExecutor getInstance() {
if (executor == null) {
synchronized (ThreadPoolManager.class) {
if (executor == null) {
executor = new ThreadPoolExecutor(CORE_POOL_SIZE, MAXIMUM_POOL_SIZE, KEEP_ALIVE_TIME,
TimeUnit.SECONDS, new ArrayBlockingQueue(10));
}
}
}
return executor;
}
}
2.任务处理的实现
public class MyTask implements Runnable {
@Override
public void run() {
// 具体业务处理
......
}
}
3.放入线程池执行
public void testExecutorPool() {
ThreadPoolExecutor executor = ThreadPoolManager.getInstance();
executor.execute(new Mytask());
}
PS:ThreadPoolExecutor+Runnable的实现没有返回结果。 如果需要获取返回结果,使用ThreadPoolExecutor+Callable方法。
------------本文结束感谢您的阅读------------