前言,在支付系统项目中,运用了一些多线程的任务,现在此记录学习一下,以备以后运用到,同时自己也理一下逻辑思想。
在项目中有这样几个需求,需要接受项目组中上游项目传送过来的数据请求,请求包括了支付,同步,余额,明细大体四个分支。在项目中因为上游是通过传送特定的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关闭线程
相关推荐
java多线程模拟队列实现排队叫号,多线程模拟排队叫号取号 java多线程模拟队列实现排队叫号,多线程模拟排队叫号取号
Java多线程实现异步调用实例。运行Main可以看到结果。main是主线程,另有A,B,C三个线程用不同的时间跑完。
Java的线程和Java AppletJava的线程和Java AppletJava的线程和Java AppletJava的线程和Java AppletJava的线程和Java Applet
Java线程:线程组 30 Java线程:线程的同步 33 一、 同步方法 35 二、 同步块 36 三、 volatile关键字 38 四、 使用synchronized关键字要注意以下四点 39 五、 关于同步和锁定的一些问题 41 Java线程:并发协作-线程...
Java多线程读大文件 java多线程写文件:多线程往队列中写入数据
java多线程实现大批量数据切分成指定份数的数据,然后多线程处理入库或者导出,线程的个数和每份数据的数量都可以控制
电子书相关:包含4个有关JAVA线程的电子书(几乎涵盖全部有关线程的书籍) OReilly.Java.Threads.3rd.Edition.Sep.2004.eBook-DDU Java Thread Programming (Sams) java线程第二版中英文 ...第十章 线程组
java一些简单的多线程用法,适合初学者
Java多线程实现数据切割批量执行,实现限流操作。 java线程池Executors实现数据批量操作。 批量异步Executors处理数据,实现限流操作,QPS限流。 线程池调用第三方接口限流实现逻辑。 案例适合: 1.批量处理大数据。...
该文档总结了Java多线程相关的知识点,分享给大家,简单易懂!
里面提供Java多线程的概念,同步,死锁,wait/nofity机制的示例《生产者与消费者》例子
Java多线程设计模式上传文件Java多线程设计模式上传文件Java多线程设计模式上传文件Java多线程设计模式上传文件Java多线程设计模式上传文件Java多线程设计模式上传文件Java多线程设计模式上传文件Java多线程设计模式...
Java线程:概念与原理 Java线程:创建与启动 Java线程:线程栈模型与线程的变量 Java线程:线程状态的转换 Java线程:线程的同步与锁 Java线程:线程的交互 Java线程:线程的调度-休眠 Java线程:线程的调度-优先级 ...
Java 模拟线程并发 Java, 模拟线程并发,线程,并发 Java, 模拟线程并发,线程,并发 Java, 模拟线程并发,线程,并发 Java, 模拟线程并发,线程,并发
Java 线程系列博文总结word化,编目如下,欢迎互相学习交流: Java线程:概念与原理 Java线程:创建与启动 Java线程:线程栈模型与线程的变量 Java线程:线程状态的转换 Java线程:线程的同步与锁 Java线程:...
java多线程每个线程挨着打印ABC的4种实现方式,有4个线程t1、t2、t3、t4,t1打印A后t2打印A再t3打印A再t4打印A,然后从新回到t1打印B再t2打印B...t4打印B... 4个线程轮流打印abc... 一个线程可以理解为一个人,打印...
1. SpringBoot 自定义线程池以及多线程间的异步调用(@Async、@EnableAsync) 2.Java多线程之定时任务 以及 SpringBoot多线程实现定时任务 3.@EnableScheduling 与 @Scheduled
用java平台利用java的多线程特点,编写进度条的现实以及当前时间的实时更新。
java多线程PPT 多线程基本概念 创建线程的方式 线程的挂起与唤醒 多线程问题
java多线程知识点,源代码案例,代码案例中包括如何创建线程,主线程,线程优先级,线程组,线程同步,死锁,线程间的通信知识点