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