国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

并發編程把我整的是服服氣氣的了

開發 前端
阿粉因為原來的編程習慣,已經很久沒有去考慮并發的問題了,結果之前在面試的問題就回答的不是很完善,而阿粉也用心學習了并發編程這一塊的所有內容,一起來分享給大家。

 阿粉因為原來的編程習慣,已經很久沒有去考慮并發的問題了,結果之前在面試的問題就回答的不是很完善,而阿粉也用心學習了并發編程這一塊的所有內容,一起來分享給大家。

[[356708]]

為什么需要并發編程因為現在的CPU我們大家也都知道,什么幾核幾線程,各種各樣,而我們并發編程的目的是為了讓程序運行得更快,這里的更快說的并不是讓我們無限制啟動更多的線程就能讓程序進行最大可能的并發操作,但是我們在進行并發編程的時候,很容易遇到很多的問題,比如說死鎖問題,再比如說上下文的切換的問題,這都是問題所在。

實現多線程的幾種方式,面試中最簡單的題目

說起來這個面試題,很多回答都一樣,

  • 繼承Thread類
  • 實現Runnable接口
  • 使用線程池

這是很多面試者回答的時候總是回答這三個,但是實際上,實現多線程的方式也不限于這幾種方式,還有比如說帶返回值的線程實現,定時器實現,內部類實現,這些方式都是可以實現多線程的。那我們今天就先來把這些不常用的方式來梳理一下。

使用匿名內部類的方式實現多線程

其實說實話,這匿名內部類的方式也不能算是一種新的實現方式,只不過是把這個實現方式放到了匿名類里面了,實現的總體內部還是使用的繼承 Thread和實現Runnable接口。

案例實現:

 

  1. public class TestClass { 
  2.     public static void main(String[] args) { 
  3.         // 基于子類的方式 
  4.         new Thread() { 
  5.             @Override 
  6.             public void run() { 
  7.                 while (true) { 
  8.                     printThreadInfo(); 
  9.                 } 
  10.             } 
  11.         }.start(); 
  12.  
  13.         // 基于接口的實現 
  14.         new Thread(new Runnable() { 
  15.             @Override 
  16.             public void run() { 
  17.                 while (true) { 
  18.                     printThreadInfo(); 
  19.                 } 
  20.             } 
  21.         }).start(); 
  22.     } 
  23.     private static void printThreadInfo() { 
  24.         System.out.println("當前運行的線程名為: " + Thread.currentThread().getName()); 
  25.         try { 
  26.             Thread.sleep(1000); 
  27.         } catch (Exception e) { 
  28.             throw new RuntimeException(e); 
  29.         } 
  30.     } 
  31.  
  32. 實現結果: 
  33.  
  34. 當前運行的線程名為:Thread-1 
  35. 當前運行的線程名為:Thread-0 
  36. 當前運行的線程名為:Thread-1 
  37. 當前運行的線程名為:Thread-0 
  38. 當前運行的線程名為:Thread-1 
  39. 當前運行的線程名為:Thread-0 
  40. 當前運行的線程名為:Thread-0 
  41. 當前運行的線程名為:Thread-1 
  42. 當前運行的線程名為:Thread-1 
  43. 當前運行的線程名為:Thread-0 
  44. 當前運行的線程名為:Thread-0 
  45. 當前運行的線程名為:Thread-1 

其實對于上述手段,大家也肯定都會,那么我們就說說這個定時器實現方式,這個方式實際上是也是大家經常會使用的一種方式,因為我們很多時候都需要在我們不在的情況下進行一些操作,比如說,每天晚上對系統進行一下當天的統計操作什么的。

使用定時器實現

 

  1. public class TestClass { 
  2.     private static final SimpleDateFormat dateFormat = 
  3.             new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); 
  4.  
  5.     public static void main(String[] args) throws Exception { 
  6.         // 創建定時器 
  7.         Timer timer = new Timer(); 
  8.  
  9.         // 提交計劃任務 
  10.         timer.schedule(new TimerTask() { 
  11.             @Override 
  12.             public void run() { 
  13.                 System.out.println("定時任務執行了..."); 
  14.             } 
  15.         }, dateFormat.parse("2020-12-08 20:30:00")); 
  16.     } 
  17.  
  18. 這段代碼大家可以復制一下,在你設定好的時間內進行執行 

關于多線程的實現方式,阿粉就給大家講述到這里,畢竟這個東西在你使用的時候,一定是活學活用的,不是一成不變的,需要你看自己的需求來弄。

接下來我們就先從并發編程的線程安全性開始入手,接下來阿粉也會繼續給大家更新關于并發編程的各種技術內容,讓大家能夠盡快的掌握好這個線程安全的問題,

線程的安全性操作

其實對于一個對象來說,他是否是線程安全的,完全取決于他是否被多個線程去訪問,而如果要讓我們的對象是線程安全的話,那么我們一定要采取一些方式,而方式都有哪些呢?

  • 同步機制
  • 加鎖機制

也就是大家所了解的同步 Synchronized 和加鎖的機制。還有就是使用Volatile類型的變量。

也就是說,如果多個線程去訪問同一個可變的狀態的變量的時候,沒有使用合適的同步,那么程序相對來說就會出現錯誤,而解決方式也有好幾種,

  • 比如說不在線程之前共享這個變量
  • 將狀態變量修改成為不可變的的變量
  • 在訪問狀態變量的時候使用同步

而阿粉之前也看過一個圖片,就是說他從字節碼的角度去分析了線程不安全的操作,看下圖

 

 

 

 

用一個最簡單的案例給大家講解Synchronized,我們手動實現一個線程然后遞減,每次輸出這個變量,最終看效果圖

 

  1. public class TestClass implements Runnable{ 
  2.     int i = 100; 
  3.  
  4.     @Override 
  5.     public void run() { 
  6.         // TODO Auto-generated method stub 
  7.         while(true) { 
  8.             if(i>0) { 
  9.                 try { 
  10.                     Thread.sleep(10);//為了讓安全問題明顯,我們讓線程執行的時間變長,故睡眠10毫秒 
  11.                 } catch (InterruptedException e) { 
  12.                     // TODO Auto-generated catch block 
  13.                     e.printStackTrace(); 
  14.                 } 
  15.                 System.out.println(i); 
  16.                 i--; 
  17.             } 
  18.         } 
  19.     } 
  20.  
  21. class Test{ 
  22.     public static void main(String[] args) { 
  23.         TestClass testClass = new TestClass(); 
  24.         Thread t1 = new Thread(testClass); 
  25.         Thread t2 = new Thread(testClass); 
  26.         Thread t3 = new Thread(testClass); 
  27.         t1.start(); 
  28.         t2.start(); 
  29.         t3.start(); 
  30.     } 
  31.  

不用說大家都知道,結果肯定是亂的一塌糊涂,有來回跳躍的,也有分段執行的,反正就是不是從100到1的,結果大家可以把代碼拿過去使用一下自己看看。

那么我們加上Synchronized關鍵字之后呢?

 

  1. public class TestClass implements Runnable{ 
  2.     int i = 100; 
  3.     @Override 
  4.     public void run() { 
  5.         while(true) { 
  6.             synchronized (this){ 
  7.                 if(i>0) { 
  8.                     try { 
  9.                         Thread.sleep(10);//為了讓安全問題明顯,我們讓線程執行的時間變長,故睡眠10毫秒 
  10.                     } catch (InterruptedException e) { 
  11.                         e.printStackTrace(); 
  12.                     } 
  13.                     System.out.println(i); 
  14.                     i--; 
  15.                 } 
  16.             } 
  17.         } 
  18.     } 
  19.  
  20. class Test{ 
  21.     public static void main(String[] args) { 
  22.         TestClass testClass = new TestClass(); 
  23.         Thread t1 = new Thread(testClass); 
  24.         Thread t2 = new Thread(testClass); 
  25.         Thread t3 = new Thread(testClass); 
  26.         t1.start(); 
  27.         t2.start(); 
  28.         t3.start(); 
  29.     } 

大家可以去執行一下運行結果,順帶打印出執行結果,是不是這次就很舒服了,終于看到自己心心念念的從100-1的內容了,而實際上,我們只是通過加上了一個同步的關鍵字,來實現了線程的安全性操作,讓線程同步執行,不再會出現那個不安全的行為,是不是很簡單?你學會了么?

責任編輯:華軒 來源: Java極客技術
相關推薦

2020-12-09 08:27:48

并發編程編程開發

2024-05-14 08:20:59

線程CPU場景

2020-03-09 09:13:40

HTTPSTCP網絡協議

2019-09-27 09:13:55

Redis內存機制

2022-02-07 20:36:12

網絡NASIP網段

2019-06-17 08:21:06

RPC框架服務

2024-01-04 14:16:05

騰訊紅黑樹Socket

2014-06-27 18:22:19

2013-06-17 11:21:27

2022-05-20 08:30:55

TOP命令Linux

2021-12-03 11:57:27

代碼##語言

2020-04-14 10:06:20

微服務Netflix語言

2012-07-25 09:15:16

盜版者客戶

2015-12-14 09:39:48

編程經驗工作

2020-12-09 11:38:16

數據庫測試環境

2021-09-13 08:41:52

職場互聯網自閉

2011-10-17 09:50:38

編程

2013-01-10 10:05:29

編程面向對象編程

2011-07-11 10:34:40

編程技巧蘋果

2022-07-30 12:24:55

智能圍巾傳感器心率
點贊
收藏

51CTO技術棧公眾號

国产精品久久久久久久乖乖| av成人资源网| 亚洲图片欧美日产| 任你躁在线精品免费| 久久久久久久久久久久久久一区 | 色狠狠综合天天综合综合| 精品国产白色丝袜高跟鞋| 欧美久久精品一级黑人c片| 欧美日韩一区二区高清| 老熟妇仑乱视频一区二区| 国产精品99久久久久久动医院| 蜜桃精品久久久久久久免费影院| 中文字幕一区二区三| 国产精品一区二区av影院萌芽| 成人黄色免费网站在线观看| 久久综合av免费| av影院在线| 亚洲自拍小视频免费观看| 久久这里只有精品视频网| 免费av不卡在线观看| 91中文在线视频| 中文字幕亚洲精品在线观看| 搜成人激情视频| 国产精品一区二区三区观看| 亚洲色图.com| 999精品视频在线观看| 欧美在线激情| 色94色欧美sute亚洲线路二| 一本色道久久综合亚洲精品酒店| 日韩在线综合网| 亚洲精品国产欧美| 久久www成人_看片免费不卡| 精品电影在线| 成人久久18免费网站图片| 亚洲欧洲综合另类| 看全色黄大色大片免费久久久| 国产美女三级视频| 色妞久久福利网| 国产黄色91视频| 91九色在线播放| 国产专区一区二区三区| 色婷婷av久久久久久久| 国产亚洲一区二区三区不卡| 免费全黄无遮挡裸体毛片| 欧美精品国产精品日韩精品| 久久午夜免费电影| 成人在线视频www| 91专区在线观看| 亚洲婷婷在线视频| 亚洲夂夂婷婷色拍ww47| 欧美一区二区三区少妇| 欧美在线视频观看免费网站| 久久综合久色欧美综合狠狠| 日本少妇一区| 青青草综合在线| 亚洲区中文字幕| 国产剧情av麻豆香蕉精品| 91av亚洲| 自拍日韩亚洲一区在线| 色午夜这里只有精品| 99久久综合99久久综合网站| 亚洲电影二区| 中文久久久久久| 777精品视频| 亚洲三级在线观看| 大色综合视频网站在线播放| 日本v片在线免费观看| 国产日产精品一区二区三区四区 | 色综合天天天天做夜夜夜夜做| 婷婷亚洲综合| 国产小视频免费在线网址| 97超碰最新| 欧美精品自拍偷拍动漫精品| 日韩av电影免费观看高清完整版| 91豆花视频在线播放| 久久久久久人妻一区二区三区| 九九热视频这里只有精品| 亚洲欧美日韩久久| 综合激情在线| 免费国产在线观看| 久久久久免费网| 亚洲天堂免费在线| 欧美经典一区二区三区| 欧美少妇xxxx| 岛国中文字幕在线| cao在线观看| 78色国产精品| 色综合网色综合| 国产对白叫床清晰在线播放| 国产精品乱码| 日韩美女福利视频| 久久精品欧洲| 久久野战av| 先锋成人影音| 亚洲一区二区三区乱码aⅴ蜜桃女| 欧美精品久久99久久在免费线| 琪琪一区二区三区| 国产精品久久久久久久久久久久久久久| 中文字幕高清20页| 精品久久久久久中文字幕动漫| 日韩激情av在线免费观看| 国产欧美精品国产国产专区| 你懂的国产精品| 在线毛片观看| 少妇高潮露脸国语对白| 欧美一区免费视频| 久久精品人人做人人爽| 亚洲午夜在线观看视频在线| 青椒成人免费视频| 国内毛片久久| 18加网站在线| 日本在线观看免费视频| 国产日本一区二区三区| 美日韩在线视频| 欧亚一区二区三区| 99久久久无码国产精品| 综合亚洲视频| 国产区一区二| 成年人视频免费在线观看| 国内精品视频一区二区三区| 国产精品视频自在线| 精品国产乱码久久久久久久久| 国产欧美精品一区二区色综合 | 久久久久久久激情| 999在线免费观看视频| 国产亚洲视频在线| 欧美午夜xxx| 91丨porny丨户外露出| 欧美私人啪啪vps| 欧美精品三级在线| 免费网站成人| 91av影院| www.午夜色| 国产日韩精品在线| 精品电影一区二区三区| 日本一二三不卡| 日韩va欧美va亚洲va久久| 亚洲黄页网站| 中文在线8资源库| 青青草视频在线观看| 久久国产成人精品国产成人亚洲| 国产伦精品一区二区三区高清| 国精产品一区一区三区有限在线| 亚洲第一av在线| 动漫精品一区二区| 国产无遮挡一区二区三区毛片日本 | 日本久久伊人| 免费成人黄色| www.玖玖玖| 一本色道久久综合亚洲精品婷婷| 91精品视频大全| 高清欧美性猛交xxxx| 亚洲欧洲在线免费| 欧美一区国产二区| 精品动漫一区二区三区| 国产亲近乱来精品视频| 韩国一区二区视频| 亚洲一级在线| 欧美激情日韩| 日韩综合一区| 精品中文字幕一区二区三区av| 国产亚洲高清在线观看| 在线女人免费视频| 日本在线视频中文有码| 国产资源在线看| 久草电影在线| avlululu| 99色在线视频| 国产精品无码专区av在线播放| 异国色恋浪漫潭| 欧美一区二区三区四区在线观看地址 | 欧美日韩极品在线观看一区| 依依成人精品视频| 久久久久九九视频| 国产成人精品免费网站| 日本不卡高清视频| 日韩天堂av| 欧美.日韩.国产.一区.二区| 日韩av在线播放网址| 天天久久夜夜| 欧美爱爱网站| 欧美重口另类| 亚洲肉体裸体xxxx137| 美女av一区| 老司机aⅴ在线精品导航 | 久久久久观看| 懂色av一区二区| 欧美大片91| 色噜噜成人av在线| 久久精品资源| 日本欧美一区| 国产成人福利夜色影视| 成人久久网站| www.久久久.com| 精品国产乱码一区二区三区| 久久免费精品| 理论片一区二区在线| 一区二区小说| 欧美性感美女一区二区| 成人一区不卡|