這個(gè)世界就是異步的宣增,因此異步編程變得越來(lái)越重要。當(dāng)然 Java 語(yǔ)言也對(duì)異步編程提供良好支持矛缨。特別是在 Java 8 中對(duì)異步編程進(jìn)行很大改進(jìn)爹脾。Java 8 可以算是 Java 中一個(gè)里程碑版本,添加許多讓人驚嘆的新的特性箕昭,以后會(huì)給大家一一道來(lái)灵妨。
現(xiàn)在微服務(wù)出現(xiàn),鞏固了 Java 立于 web 應(yīng)用開(kāi)發(fā)的老大的位置落竹。
我們看一看在 Java 中是如何實(shí)現(xiàn)多任務(wù)的泌霍。我們有三個(gè)任務(wù) T1、T2和T3述召。
第一種方式就是同步執(zhí)行朱转,java 中大部分代碼都是同步執(zhí)行的,這樣很好理解积暖,處理也相對(duì)簡(jiǎn)單藤为,就是耗時(shí)費(fèi)力。
然后我們可以通過(guò)為每個(gè)任務(wù)開(kāi)一個(gè)線程來(lái)實(shí)現(xiàn)并行執(zhí)行夺刑,缺點(diǎn)顯然易見(jiàn)缅疟,多線程難于駕馭。也缺乏完整性遍愿,不可見(jiàn)存淫。
比起多線程實(shí)現(xiàn)多任務(wù)執(zhí)行,異步編程要簡(jiǎn)單的多沼填。從圖上看雖然很像桅咆,但實(shí)現(xiàn)機(jī)制卻不同。相對(duì)于多線程來(lái)說(shuō)異步要簡(jiǎn)單和可控坞笙。
我們看一下異步編程在 Java 中發(fā)展過(guò)程岩饼。
我們來(lái)簡(jiǎn)單地實(shí)現(xiàn)以下異步任務(wù)刽脖。來(lái)對(duì)解釋上面的內(nèi)容。
我們用到 jersey 這個(gè) restful 框架忌愚,我們先用 runnable 來(lái)實(shí)現(xiàn)一個(gè)異步任務(wù)曲管。
在 java 8 中我們可以進(jìn)行修改,使用 excute 來(lái)實(shí)現(xiàn)異步任務(wù)硕糊,代碼如下圖