动力节点首页 全国咨询热线:400-8080-105

绑定手机号,登录
手机号

验证码

微信登录
手机号登录
手机号

验证码

微信登录与注册
微信扫码登录与注册

扫码关注微信公众号完成登录与注册
手机号登录
首页 > 文章

Java线程异步调用

08-04 12:12 812浏览
举报 T字号
  • 大字
  • 中字
  • 小字

系统登录的时候,需要根据用户ID生成一些和当前用户有关的数据放在缓存里,如果不考虑异步调用,则整个登录过程可能需要近8S的时间,这肯定是无法接受的。因而需要在登录的时候,将这些与登录无关的数据操作提取出来,并放在异步进程中实现。

在Java程序中,如果想实现异步调用方法的功能,需要通过线程方式实现,即实现java.lang.Runnable接口或者继承java.lang.Thread类,这里选择使用实现Runnable接口。考虑到是生产环境,还需要使用到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<Runnable>(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方式。

动力节点在线课程涵盖零基础入门,高级进阶,在职提升三大主力内容,覆盖Java从入门到就业提升的全体系学习内容。全部Java视频教程免费观看,相关学习资料免费下载!对于火爆技术,每周一定时更新!如果想了解更多相关技术,可以到动力节点在线免费观看Java多线程视频教程哦!

0人推荐
共同学习,写下你的评论
0条评论
代码小兵872
程序员代码小兵872

30篇文章贡献98658字

相关课程 更多>

作者相关文章更多>

推荐相关文章更多>

Java初学者学习方法

代码小兵64503-29 11:46

两道经典算法问题

代码小兵51603-29 13:18

Java中模拟高并发的方法

代码小兵87208-06 11:36

高并发编程基础知识

代码小兵27908-06 11:30

JsonPath使用方法

代码小兵34507-29 13:19

发评论

举报

0/150

取消