Java 里面進(jìn)行多線程通信的主要方式就是共享內(nèi)存的方式,共享內(nèi)存主要的關(guān)注點(diǎn)有兩個(gè):可見性和有序性原子性。Java 內(nèi)存模型(JMM)解決了可見性和有序性的問題,而鎖解決了原子性的問題,理想情況下我們希望做到“同步”和“互斥”。有以下常規(guī)的實(shí)現(xiàn)方法:
將數(shù)據(jù)抽象成一個(gè)類,并將數(shù)據(jù)的操作作為這個(gè)類的方法。
Runnable 對(duì)象作為一個(gè)類的內(nèi)部類。
一. 將數(shù)據(jù)抽象成一個(gè)類,并將數(shù)據(jù)的操作作為這個(gè)類的方法
將數(shù)據(jù)抽象成一個(gè)類,并將對(duì)這個(gè)數(shù)據(jù)的操作作為這個(gè)類的方法,這么設(shè)計(jì)可以和容易做到同步,只要在方法上加”synchronized“。
二. Runnable 對(duì)象作為一個(gè)類的內(nèi)部類
將 Runnable 對(duì)象作為一個(gè)類的內(nèi)部類,共享數(shù)據(jù)作為這個(gè)類的成員變量,每個(gè)線程對(duì)共享數(shù)據(jù)的操作方法也封裝在外部類,以便實(shí)現(xiàn)對(duì)數(shù)據(jù)的各個(gè)操作的同步和互斥,作為內(nèi)部類的各個(gè) Runnable 對(duì)象調(diào)用外部類的這些方法。
更多關(guān)于“Java培訓(xùn)”的問題,歡迎咨詢千鋒教育在線名師。千鋒已有十余年的培訓(xùn)經(jīng)驗(yàn),課程大綱更科學(xué)更專業(yè),有針對(duì)零基礎(chǔ)的就業(yè)班,有針對(duì)想提升技術(shù)的好程序員班,高品質(zhì)課程助力你實(shí)現(xiàn)java程序員夢(mèng)想。