摘要:項目簡介是一款異步處理框架。設(shè)計目的并行執(zhí)行可以大幅度提升程序的運行速度,有效利用資源。引入定義測試對象定義接口當前版本沒有引入等字節(jié)碼包,需要實現(xiàn)接口才能異步并行。
項目簡介
Async 是一款 Java 異步處理框架。
設(shè)計目的并行執(zhí)行可以大幅度提升程序的運行速度,有效利用 CPU 資源。
但是多帶帶為每次方法都使用線程池手寫,顯然不夠優(yōu)雅,復(fù)用性也很差。
特性支持接口類的動態(tài)代理異步
支持非接口類的 CGLIB 代理異步
快速入門具體測試代碼,參見 async-test 模塊。
引入 maven定義測試對象com.github.houbb async-core 0.0.2
定義接口
當前版本沒有引入 CGLIB 等字節(jié)碼包,需要實現(xiàn)接口才能異步并行。
如果不實現(xiàn)接口,則不實現(xiàn)異步并行。
下個版本會添加 CGLIB,則不用實現(xiàn)接口。
import com.github.houbb.async.core.model.async.AsyncResult; /** * 用戶服務(wù)接口 * @author binbin.hou * date 2019/3/7 * @since 0.0.1 */ public interface UserService { /** * 查詢用戶信息 * @param id 主鍵 * @return 結(jié)果 */ AsyncResultqueryUser(final String id); }
定義測試實現(xiàn)類
public class UserServiceImpl implements UserService { @Override public AsyncResult測試 不使用代理queryUser(String id) { System.out.println("開始根據(jù)用戶id 查詢用戶信息 " + id); try { // 沉睡模擬處理耗時 TimeUnit.SECONDS.sleep(3); } catch (InterruptedException e) { e.printStackTrace(); } final String result = id + "-result"; System.out.println("結(jié)束根據(jù)用戶id 查詢用戶信息 " + result); AsyncResult asyncResult = new AsyncResult<>(); asyncResult.setValue(result); return asyncResult; } }
常規(guī)使用方式
/** * 默認不使用代理 */ @Test public void queryUserTest() { long start = System.currentTimeMillis(); UserService userService = new UserServiceImpl(); AsyncResultresult = userService.queryUser("123"); AsyncResult result2 = userService.queryUser("1234"); System.out.println("查詢結(jié)果" + result.getResult()); System.out.println("查詢結(jié)果" + result2.getResult()); long end = System.currentTimeMillis(); System.out.println("共計耗時: " + (end-start)); }
日志信息
開始根據(jù)用戶id 查詢用戶信息 123 結(jié)束根據(jù)用戶id 查詢用戶信息 123-result 開始根據(jù)用戶id 查詢用戶信息 1234 結(jié)束根據(jù)用戶id 查詢用戶信息 1234-result 查詢結(jié)果123-result 查詢結(jié)果1234-result 共計耗時: 6009使用代理
/** * 使用動態(tài)代理 */ @Test public void queryUserDynamicProxyTest() { long start = System.currentTimeMillis(); UserService userService = new UserServiceImpl(); UserService userServiceProxy = (UserService) AsyncProxy.getProxy(userService); AsyncResultresult = userServiceProxy.queryUser("123"); AsyncResult result2 = userServiceProxy.queryUser("1234"); System.out.println("查詢結(jié)果" + result.getResult()); System.out.println("查詢結(jié)果" + result2.getResult()); long end = System.currentTimeMillis(); System.out.println("共計耗時: " + (end-start)); }
日志信息
開始根據(jù)用戶id 查詢用戶信息 123 開始根據(jù)用戶id 查詢用戶信息 1234 結(jié)束根據(jù)用戶id 查詢用戶信息 123-result 結(jié)束根據(jù)用戶id 查詢用戶信息 1234-result 查詢結(jié)果123-result 查詢結(jié)果1234-result 共計耗時: 3009
同樣的功能實現(xiàn),節(jié)約了將近一半的時間。
拓展閱讀Async-01-項目模塊說明
Async-02-CGLIB代理.md
后期特性可結(jié)合 spring aop 使用的注解
返回值不再要求返回 AsyncResult,減少對代碼的侵入性
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/73684.html
摘要:對于任務(wù)的分割,要求各個子任務(wù)之間相互獨立,能夠并行獨立地執(zhí)行任務(wù),互相之間不影響。是叉子分叉的意思,即將大任務(wù)分解成并行的小任務(wù),是連接結(jié)合的意思,即將所有并行的小任務(wù)的執(zhí)行結(jié)果匯總起來。使用方法會阻塞并等待子任務(wù)執(zhí)行完并得到其結(jié)果。 Fork/Join是什么? Fork/Join框架是Java7提供的并行執(zhí)行任務(wù)框架,思想是將大任務(wù)分解成小任務(wù),然后小任務(wù)又可以繼續(xù)分解,然后每個小...
摘要:后端好書閱讀與推薦系列文章后端好書閱讀與推薦后端好書閱讀與推薦續(xù)后端好書閱讀與推薦續(xù)二后端好書閱讀與推薦續(xù)三這里依然記錄一下每本書的亮點與自己讀書心得和體會,分享并求拍磚。然后又請求封鎖,當釋放了上的封鎖之后,系統(tǒng)又批準了的請求一直等待。 后端好書閱讀與推薦系列文章:后端好書閱讀與推薦后端好書閱讀與推薦(續(xù))后端好書閱讀與推薦(續(xù)二)后端好書閱讀與推薦(續(xù)三) 這里依然記錄一下每本書的...
摘要:后端好書閱讀與推薦系列文章后端好書閱讀與推薦后端好書閱讀與推薦續(xù)后端好書閱讀與推薦續(xù)二后端好書閱讀與推薦續(xù)三這里依然記錄一下每本書的亮點與自己讀書心得和體會,分享并求拍磚。然后又請求封鎖,當釋放了上的封鎖之后,系統(tǒng)又批準了的請求一直等待。 后端好書閱讀與推薦系列文章:后端好書閱讀與推薦后端好書閱讀與推薦(續(xù))后端好書閱讀與推薦(續(xù)二)后端好書閱讀與推薦(續(xù)三) 這里依然記錄一下每本書的...
摘要:后端好書閱讀與推薦系列文章后端好書閱讀與推薦后端好書閱讀與推薦續(xù)后端好書閱讀與推薦續(xù)二后端好書閱讀與推薦續(xù)三這里依然記錄一下每本書的亮點與自己讀書心得和體會,分享并求拍磚。然后又請求封鎖,當釋放了上的封鎖之后,系統(tǒng)又批準了的請求一直等待。 后端好書閱讀與推薦系列文章:后端好書閱讀與推薦后端好書閱讀與推薦(續(xù))后端好書閱讀與推薦(續(xù)二)后端好書閱讀與推薦(續(xù)三) 這里依然記錄一下每本書的...
摘要:探究系統(tǒng)登錄驗證碼的實現(xiàn)后端掘金驗證碼生成類手把手教程后端博客系統(tǒng)第一章掘金轉(zhuǎn)眼間時間就從月份到現(xiàn)在的十一月份了。提供了與標準不同的工作方式我的后端書架后端掘金我的后端書架月前本書架主要針對后端開發(fā)與架構(gòu)。 Spring Boot干貨系列總綱 | 掘金技術(shù)征文 - 掘金原本地址:Spring Boot干貨系列總綱博客地址:http://tengj.top/ 前言 博主16年認識Spin...
閱讀 789·2021-11-09 09:47
閱讀 1581·2019-08-30 15:44
閱讀 1149·2019-08-26 13:46
閱讀 2114·2019-08-26 13:41
閱讀 1279·2019-08-26 13:32
閱讀 3783·2019-08-26 10:35
閱讀 3532·2019-08-23 17:16
閱讀 462·2019-08-23 17:07