java中线程的管理以及线程组的实现运用构造心得

前言,在支付系统项目中,运用了一些多线程的任务,现在此记录学习一下,以备以后运用到,同时自己也理一下逻辑思想。

 

在项目中有这样几个需求,需要接受项目组中上游项目传送过来的数据请求,请求包括了支付,同步,余额,明细大体四个分支。在项目中因为上游是通过传送特定的json字符串,用http的请求,向我们的项目中发出请求操作,所以我们用多线程的思路来完成这几个操作:

 

第一步:

创建一个抽象的类AsyncRequestExecutor ,同时实现Runnable,在构造方法中实例化一个非阻塞队列ConcurrentLinkedQueue (先进先出);同时包括几个方法putRequest(String date) ,该方法往队列中add请求数据,notifyWork():唤醒当前的线程,stopWork():停止工作,以及@Override run方法,在run方法中获得队列中的数据,分析是4种操作的哪一种,进行工作。在这有点注意的是如何调用对应的线程,以及相应的方法进行操作?这里我们要添加一个抽象的方法operationImpl(string data).

 

第二步

创建了4个 线程:PayAsyncRequestExecutor,QueryPayAsyncRequestExecutor,BalanceAsyncRequestExecutor,DetailAsyncRequestExecutor ,这些线程不用再去写自己的唤醒等方法,可以直接继承自AsyncRequestExecutor  ,同时重写其抽象方法operationImpl(string data)实现自己具体的逻辑

 

第三步

建立AsyncRequestThread 类,构造函数中 调用super 传入group和 AsyncRequestExecutor 

 

第四步

为了使这几个线程不自动归属在系统线程组下,保障数据的安全,我们建立自己的线程组:建立一个AsyncRequestManager类来管理几个线程,将4个类型为AsyncRequestThread 的线程加在线程组中,同时写init 方法和stop方法以及putData方法,以便在上游请求的时候存放数据,同时根据类型唤醒对应的线程

 

 第五步

在监听器中contextInitialized的时候init线程,调用线程组的init方法,以及contextDestroyed关闭线程

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值