本教程操作環(huán)境:windows7系統(tǒng)、java10版,DELL G3電腦。
同步在java中的應(yīng)用
1.概念
是一種典型的請求-響應(yīng)模型,當(dāng)請求調(diào)用一個函數(shù)或方法后,需等待其響應(yīng)返回,然后執(zhí)行后續(xù)代碼。同步的特征便是「有序」,當(dāng)各個過程都執(zhí)行完畢,最后返回結(jié)果。
2.同步原理
當(dāng)有多個線程要同時訪問一個變量或?qū)ο髸r,如果這些線程中既有讀又有寫操作時,就會導(dǎo)致變量值或?qū)ο蟮臓顟B(tài)出現(xiàn)混亂,從而導(dǎo)致程序異常。
舉個例子,如果一個銀行賬戶同時被兩個線程操作,一個取100塊,一個存錢100塊。假設(shè)賬戶原本有0塊,如果取錢線程和存錢線程同時發(fā)生,會出現(xiàn)什么結(jié)果呢?取錢不成功,賬戶余額是100。取錢成功了,賬戶余額是0,那到底是哪個呢?很難說清楚。因此多線程同步就是要解決這個問題。
3.實例
synchronized關(guān)鍵字
使用synchronized關(guān)鍵字我們可以實現(xiàn)同步代碼塊
java異步的使用
1.概念
異步編程是只發(fā)送了調(diào)用的指令,調(diào)用者無需等待被調(diào)用的方法執(zhí)行完畢,而是繼續(xù)執(zhí)行下面的流程。在一個多處理器或多核的環(huán)境中,異步調(diào)用是真正的并行執(zhí)行。
2.應(yīng)用場景
(1)充分利用計算機CPU資源,不讓主程序阻塞在某個長時間運行的任務(wù)上,從而優(yōu)化主程序的執(zhí)行時間;
(2)異步編程 + NIO。NIO 技術(shù)本身現(xiàn)在已經(jīng)很成熟了,異步編程技術(shù)將 NIO 落地到系統(tǒng),尤其是業(yè)務(wù)快速迭代的前臺、中臺系統(tǒng)中。
3.實例
可以創(chuàng)建一個新線程來異步執(zhí)行任何操作。隨著Java 8 中l(wèi)ambda表達式的發(fā)布,它變得更干凈,更易讀。
創(chuàng)建一個新的線程來計算和打印數(shù)字的階乘:
以上就是在java中關(guān)于同步、異步的使用,在多個程序需要運行處理的時候,就可以選擇異步的方法去處理,對應(yīng)的同步也會為大家?guī)硪恍┲v解,可以關(guān)注和留意。更多關(guān)于“Java培訓(xùn)”的問題,歡迎咨詢千鋒教育在線名師。千鋒已有十余年的培訓(xùn)經(jīng)驗,課程大綱更科學(xué)更專業(yè),有針對零基礎(chǔ)的就業(yè)班,有針對想提升技術(shù)的好程序員班,高品質(zhì)課程助力你實現(xiàn)java程序員夢想。