大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 學習攻略 Java多線程入門快速學習

Java多線程入門快速學習

更新時間:2020-07-09 14:56:35 來源:動力節點 瀏覽1924次

多線程技術在java開發中使用的場景還是很多的,而我們使用多線程的目的就是為了提高程序的運行效率。下面我們來簡單介紹一下多線程。

Java多線程入門快速學習

1.在系統中,CPU通過給每個線程分配CPU時間片來實現這個機制,時間片是CPU分配給各個線程的時間,時間片非常短,所以CPU通過不停切換線程執行,感覺是多線程同時執行,時間片一般是幾十毫秒。

Thread類中start方法用來啟動線程,實現了多線程運行,這時無需等待run方法體代碼執行完畢而直接繼續執行下面的代碼。通過調用Thread類的start()方法來啟動一個線程,這時此線程處于就緒(可運行)狀態,并沒有運行,一旦得到cpu時間片(執行權),就開始執行run()方法,這里方法run()稱為線程體,它包含了要執行的這個線程的內容,Run方法運行結束,此線程隨即終止。(一般面試容易問到)。

2.多線程一定快嗎

下面我們舉個栗子來看看多線程的累計操作時間

public?class?ThreadTest?{
?private?static?final?long?count?=?10000L;
?public?static?void?main(String[]?args)?throws?InterruptedException?{
?concurrency();
?serial();
?}
?private?static?void?concurrency()?throws?InterruptedException?{
?long?start?=?System.currentTimeMillis();
?Thread?thread?=?new?Thread(new?Runnable()?{
?@Override
?public?void?run()?{
?int?a?=?0;
?for(long?i?=?0;?i?

從圖表中可以看出當并行累計不超過1億的時候串行的速度要快,主要因為并發執行線程有創建和上下文切換的開銷。

 

3.如何減少上下文切換

減少上下文切換的方法有無鎖并發,CAS,使用最少線程和使用協程

方法一:無鎖并發編程。多線程競爭時,會引起上下文切換,所以多線程處理數據時,可以用一些辦法來避免使用鎖,如將數據的ID按照Hash取模分段,不同的線程處理不同段的數據

方法二:CAS算法。Java的Atomic包使用CAS算法來更新數據,而不需要加鎖

方法三:使用最少線程。避免創建不需要的線程,比如任務很少,但是創建了很多線程來處理,這樣會造成大量線程都處于等待狀態

方法四:協程。在單線程里實現多任務的調度,并在單線程里維持多個任務間的切換

4.多線程使用場景

數據庫連接池,短信郵件發放,消息通知等

5.多線程創建方式

 

第一種繼承Thread類重寫run方法

class CreateThread extends Thread {
 // run方法中編寫 多線程需要執行的代碼
 public void run() {
 for (int i = 0; i < 10; i++) {
 System.out.println("i:" + i);
 }
 }
}
public class ThreadDemo {
 public static void main(String[] args) {
 System.out.println("-----多線程創建開始-----");
 // 1.創建一個線程
 CreateThread createThread = new CreateThread();
 // 2.開始執行線程 注意 開啟線程不是調用run方法,而是start方法
 System.out.println("-----多線程創建啟動-----");
 createThread.start();
 System.out.println("-----多線程創建結束-----");
 }
}

第二種實現Runnable接口,重寫run方法

class CreateRunnable implements Runnable {
 
 @Override
 public void run() {
 for (inti = 0; i< 10; i++) {
 System.out.println("i:" + i);
 }
 }
 
}

第三種使用匿名內部類方式

Thread thread = new Thread(new Runnable() {
 public void run() {
 for (int i = 0; i< 10; i++) {
 System.out.println("i:" + i);
 }
 }
 });
thread.start();

以上就是動力節點java培訓機構的小編針對“Java多線程入門快速學習”的內容進行的回答,希望對大家有所幫助,如有疑問,請在線咨詢,有專業老師隨時為你服務。

 

提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 九九在线观看高清免费 | 国产精品久久天天影视 | 亚洲欧美中文日韩综合 | 精品伊人久久大香线蕉网站 | 国产精品96久久久久久久 | 久久久国产高清 | 亚洲人jizz | 18禁片一级毛片视频播放免费看 | 青青青国产精品手机在线观看 | 免费福利在线播放 | 五月天婷婷免费视频 | 天天干在线免费视频 | a级黄片毛片 | 亚洲成人网页 | 美美女高清毛片视频黄的一免费 | 国产在线观看成人免费视频 | 色偷偷尼玛图亚洲综合 | 色婷婷色综合激情国产日韩 | 久久国产麻豆 | 国产成+人+亚洲+欧美+日韩 | 九九热视频精品 | 草久在线播放 | www.草草草 | 手机看片神马午夜片 | 99九九精品免费视频观看 | 国产午夜精品一区二区三区 | 亚洲天堂久久 | 亚洲欧美视频一区二区三区 | 国产精品免费看久久久香蕉 | 欧美日韩成人在线 | 色综合天天操 | 美国毛片aaa在线播放 | 九色最新网址 | 涩涩视频免费观看 | 亚洲成色999久久网站 | 老师邪恶影院a啦啦啦影院 老师在办公室被躁到白浆 老湿机午夜影院 | 综合久久久久综合体桃花网 | 亚洲欧美韩日 | 中国一级特黄真人毛片免 | 精品一区二区三区免费毛片爱 | 91成人免费在线视频 |