更新時(shí)間:2020-07-29 15:27:02 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽2521次
Java允許多線程并發(fā)控制,當(dāng)多個(gè)線程同時(shí)操作一個(gè)可共享的資源變量時(shí)(如數(shù)據(jù)的增刪改查),將會(huì)導(dǎo)致數(shù)據(jù)不準(zhǔn)確,相互之間產(chǎn)生沖突,因此加入同步鎖以避免在該線程沒(méi)有完成操作之前,被其他線程的調(diào)用,從而保證了該變量的唯一性和準(zhǔn)確性。下面和小編一起來(lái)看看多線程常見的7種方法吧!
1,繼承Thread
主要掌握:線程的初始化,啟動(dòng),中斷的正確處理方式(interrupted)
public?class?Demo1?{
public?static?void?main(String[]?args)?{
MyThread?thread?=?new?MyThread();
thread.start();
}
}
class?MyThread?extends?Thread{
@Override
public?void?run()?{
System.out.println(Thread.currentThread().getName()+":running...");
}
}
2,實(shí)現(xiàn)Runnable
源碼解析,為什么會(huì)調(diào)用Runnable的run方法
public?class?Demo2?{
public?static?void?main(String[]?args)?{
MyRunnable?task?=?new?MyRunnable();
new?Thread(task).start();
}
}
class?MyRunnable?implements?Runnable{
@Override
public?void?run()?{
System.out.println(Thread.currentThread().getName()+":running");
}
}
3,匿名內(nèi)部類的方式(線程只創(chuàng)建一次的情況)
有兩種方式
public?class?Demo3?{
public?static?void?main(String[]?args)?{
new?Thread(){
public?void?run()?{
System.out.println("通過(guò)匿名內(nèi)部類的方式來(lái)創(chuàng)建線程");
};
}.start();
new?Thread(new?Runnable()?{
@Override
public?void?run()?{
System.out.println("通過(guò)實(shí)現(xiàn)一個(gè)匿名的Runnable子類來(lái)實(shí)現(xiàn)");
}
}).start();
}
}
4,帶返回值的線程,實(shí)現(xiàn)Callable接口
實(shí)現(xiàn)call方法
FutureTask對(duì)任務(wù)進(jìn)行封裝
5,使用定時(shí)器的方式
Timer,TimerTask,執(zhí)行定時(shí)任務(wù)
6,使用線程池的方式
通過(guò)Executors創(chuàng)建不同的線程池進(jìn)行任務(wù)執(zhí)行
7,Lambda表達(dá)式(函數(shù)式編程)JDK1.8提供的新特
lambda表達(dá)式代碼簡(jiǎn)潔,實(shí)現(xiàn)方便,對(duì)并發(fā)支持好,性能高
我們通過(guò)打印一個(gè)集合的數(shù)據(jù)來(lái)觀察運(yùn)行結(jié)果,發(fā)現(xiàn)出來(lái)的順序是不一致的,說(shuō)明是多線程方式
以上就是動(dòng)力節(jié)點(diǎn)java培訓(xùn)機(jī)構(gòu)的小編針對(duì)“Java多線程技術(shù),多線程常見的7種方法”的內(nèi)容進(jìn)行的回答,希望對(duì)大家有所幫助,如有疑問(wèn),請(qǐng)?jiān)诰€咨詢,有專業(yè)老師隨時(shí)為你服務(wù)。
相關(guān)閱讀
0基礎(chǔ) 0學(xué)費(fèi) 15天面授
有基礎(chǔ) 直達(dá)就業(yè)
業(yè)余時(shí)間 高薪轉(zhuǎn)行
工作1~3年,加薪神器
工作3~5年,晉升架構(gòu)
提交申請(qǐng)后,顧問(wèn)老師會(huì)電話與您溝通安排學(xué)習(xí)
初級(jí) 202925
初級(jí) 203221
初級(jí) 202629
初級(jí) 203743