日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

新手場景Java線程相關問題及解決方案

瀏覽:168日期:2022-08-30 08:31:45

一、創建線程方式

a. 繼承線程類( new Thread),重寫run方法;

public class MyThread extends Thread{//繼承Thread類public void run(){//重寫run方法}}public class Main {public static void main(String[] args){new MyThread().start();//創建并啟動線程}}

b. 實現runnable接口,將runnable對象傳入Thread類;

public class MyThread2 implements Runnable {//實現Runnable接口public void run(){//重寫run方法}}public class Main {public static void main(String[] args){//創建并啟動線程MyThread2 myThread=new MyThread2();Thread thread=new Thread(myThread);thread().start();//或者 new Thread(new MyThread2()).start();}}

c. 使用線程池的方式,提交runnable或callable任務;

public class Main {public static void main(String[] args){ MyThread3 th=new MyThread3(); //使用Lambda表達式創建Callable對象 //使用FutureTask類來包裝Callable對象 FutureTask<Integer> future=new FutureTask<Integer>((Callable<Integer>)()->{return 5;} ); new Thread(task,'有返回值的線程').start();//實質上還是以Callable對象來創建并啟動線程 try{System.out.println('子線程的返回值:'+future.get());//get()方法會阻塞,直到子線程執行結束才返回 }catch(Exception e){ex.printStackTrace(); }}}

d. 推薦使用第三種方式。高效,資源可控;

二、什么是線程同步?線程同步什么時候用?

1)什么是線程同步;

即當有一個線程在對內存進行操作時,其他線程都不可以對這個內存地址進行操作,直到該線程完成操作, 其他線程才能對該內存地址進行操作,而其他線程又處于等待狀態;

2)線程同步在什么時候用(賣火車票,飛機票,取錢);

簡單的說,同步就是防止多個線程訪問同一個對象,造成數據不安全;線程的同步意味安全,譬如你去取錢 ,你的執行語句和我用的要是相同對象 ,你要在卡上扣除的錢數和銀行卡里面要有這么多錢才能扣除;

三、什么是線程安全;

1)所謂線程安全,是多個線程并發執行的情況下結果總是跟單線程運行的結果一致,邏輯上不會出現錯誤;

2)什么情況下會出現線程安全問題?

多個線程同時操作同一份數據,常常會導致線程安全問題。比如:全局的變量,靜態變量,同一條數據的數據庫操作等;

局部變量,通常不會存在線程安全問題。

3)常見的解決線程安全的方式:

1)避免使用全局的變量,將全局的變量定義為局部變量。

2)加同步鎖,使得線程同步。

a. Synchronized 同步關鍵字,可以加在方法和代碼塊上面;

/** * synchronized添加到方法上面,使方法變成同步方法 * 如果是靜態方法,鎖住的是class * 如果是普通方法,鎖住的this,當前對象 synchronized(this) * 多個線程鎖住的對象是同一個對象才能夠同步,每個類都有當前對象 */ public static synchronized void salTicket(){ if (ticketNum > 0) { try {Thread.sleep(100); } catch (InterruptedException e) {e.printStackTrace(); } System.out.println(Thread.currentThread().getName() + '買到第' + ticketNum-- + '張票'); System.out.println(Thread.currentThread().getName() + '買票完成'); }else { System.out.println('票已經售完,'+Thread.currentThread().getName() + '未買到票'); } }

b. 多個線程方法是否同步,需要判斷多個線程是否共用同一把鎖;

/** * 同步代碼塊 */ public void salTicket2() { synchronized (this) { //()中指定鎖對象,this表示當前對象,多個線程使用同一個對象調用該方法時,是同步的 //如果指定為 class,則該類的任意對象調用該方法都是同步的 if (ticketNum > 0) {try { Thread.sleep(100);} catch (InterruptedException e) { e.printStackTrace();}System.out.println(Thread.currentThread().getName() + '買到第' + ticketNum-- + '張票');System.out.println(Thread.currentThread().getName() + '買票完成'); } else {System.out.println('票已經售完,' + Thread.currentThread().getName() + '未買到票'); } } }

c. ReentrantLock 對象的lock 方法進行加鎖,unLock進行解鎖。Unlock必須放在finally中。確保能夠最終釋放鎖;

//鎖對象 private static ReentrantLock lock=new ReentrantLock(); /** * 使用lock對象進行同步,多個線程使用的是同一個lock對象,才會是同步的 */ public void salTicket3() { lock.lock();//加鎖 if (ticketNum > 0) {try { Thread.sleep(100);} catch (InterruptedException e) { e.printStackTrace();}finally { lock.unlock();//釋放鎖,必須放在finally代碼塊中,以確保能夠釋放鎖}System.out.println(Thread.currentThread().getName() + '買到第' + ticketNum-- + '張票');System.out.println(Thread.currentThread().getName() + '買票完成'); } else {System.out.println('票已經售完,' + Thread.currentThread().getName() + '未買到票'); } }

3)數據庫操作的話,也可以使用樂觀鎖或悲觀鎖的方式

4)Springmvc是如何解決線程安全問題的?

Springmvc的數據接收和傳遞都是方法級別的,使用局部變量來接收和傳遞,所以不存在線程安全問題。

四、Wait 和notify

線程間通訊的一種機制。用于手動控制線程之間的切換。在同步代碼中的鎖對象調用。可以同時通過共享內存對象,來實現數據的傳遞;

Wait 使線程進入阻塞狀態,并釋放鎖資源; Notify 隨機喚醒一個因wait進入阻塞狀態的線程; NotifyALL 喚醒所有的因wait進入阻塞狀態的線程;

3)多線程實現,怎么用?

a、將單個大的任務拆分成多個小任務,使用多線程去執行;

多線程的效率不一定比單線程的效率高;

通過線程池創建線程,通過實現runnable(無返回值)或callable(有返回值)接口來定義任務;

通過線程池的submit invoke invokeAll 等方法來執行任務;

b、使用線程異步完成某些任務,提高并發響應的能力,或讓線程周期性的執行某些任務;

c、四種線程池的特點及其創建;

Java通過Executors提供四種線程池,分別為:

1)newCachedThreadPool創建一個可緩存線程池,如果線程池長度超過處理需要,可靈活回收空閑線程,若無可回收,則新建線程。

2)newFixedThreadPool 創建一個定長線程池,可控制線程最大并發數,超出的線程會在隊列中等待。

3)newScheduledThreadPool 創建一個定長線程池,支持定時及周期性任務執行。

4)newSingleThreadExecutor 創建一個單線程化的線程池,它只會用唯一的工作線程來執行任務,保證所有任務按照指定順序(FIFO, LIFO, 優先級)執行。

//jdk中提供的四種快速創建線程池的方式 //1.定長線程池 ExecutorService fixedThreadPool = Executors.newFixedThreadPool(10); //2.緩存線程池 ExecutorService cachedThreadPool = Executors.newCachedThreadPool(); //3.周期線程池,可用來實現定時任務 ScheduledExecutorService scheduledExecutorService = Executors.newScheduledThreadPool(10); //4.單線程線程池 ExecutorService executorService = Executors.newSingleThreadExecutor();

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: Java
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
亚洲一级淫片| 国产亚洲第一伦理第一区| 国产精品mm| 国产精品久久久久久久久久白浆 | 麻豆国产一区| 毛片不卡一区二区| 国际精品欧美精品| 高潮久久久久久久久久久久久久| 久久久久伊人| 成人日韩在线| 国产综合精品| 三级欧美韩日大片在线看| 三级欧美在线一区| 日韩三级视频| 国产剧情在线观看一区| 麻豆精品在线| 久久99久久人婷婷精品综合| 老牛国内精品亚洲成av人片| 高清在线一区| 婷婷成人在线| 男人的天堂亚洲一区| 日韩精品福利一区二区三区| 国产精品久久久久久模特| 精品国产不卡| 免费观看久久av| 亚洲人成在线影院| 美女视频免费精品| 99精品在线免费在线观看| 日韩中文字幕亚洲一区二区va在线| 日韩三级精品| 成人在线视频免费| 久久精品影视| 爽好多水快深点欧美视频| 日本不卡一区二区三区| 国产精品网在线观看| 亚洲三级欧美| 麻豆91精品| 免费在线亚洲欧美| 国产综合激情| 欧美日韩在线精品一区二区三区激情综合 | 免费精品视频最新在线| 欧美中文一区| 91综合网人人| 亚洲一区国产一区| 国产伦精品一区二区三区视频| 国产精品99一区二区三| 免费成人网www| 日韩精彩视频在线观看| 伊人久久国产| 亚洲日本国产| 日韩一区亚洲二区| 午夜亚洲福利| 播放一区二区| 国产一级成人av| 久久精品99久久无色码中文字幕| 亚洲丝袜美腿一区| 精品视频久久| 亚洲一级淫片| 日韩啪啪电影网| 欧美日韩1区| 午夜电影亚洲| 国产精品www.| 国产精品婷婷| 91综合网人人| 日韩精品久久久久久| 久久精品国产亚洲夜色av网站| 日韩av中文字幕一区| 日韩中文在线播放| 国产九九精品| 免费看的黄色欧美网站| 国产精品啊啊啊| 亚洲一区激情| 日韩免费久久| 国产精品.xx视频.xxtv| 亚洲欧美日本视频在线观看| 麻豆成人91精品二区三区| 亚洲一区日韩| 国产精品原创| 欧美一区91| 日韩一级不卡| 国产福利电影在线播放| 青青国产精品| 免费日韩av片| 特黄特色欧美大片| 精品久久精品| 国产亚洲精aa在线看| 久久高清免费观看| 久久影院一区| 免费高潮视频95在线观看网站| 国产精品色在线网站| 视频一区视频二区中文字幕| 99久久精品费精品国产| 国产aⅴ精品一区二区四区| 国产精品一区二区精品| 乱人伦精品视频在线观看| 久久国产电影| 国产成人精品免费视| 欧美在线91| 亚洲69av| 免费成人在线视频观看| 日韩中文在线播放| 国产不卡一区| 国产精品久久久免费| 日本成人精品| 亚洲三级网址| 免费久久99精品国产自在现线| 亚洲国产专区校园欧美| 日韩欧美中文| 丝袜诱惑一区二区| 国产91欧美| 国内精品麻豆美女在线播放视频| 欧美久久亚洲| 国产欧美日韩在线一区二区| 亚洲综合五月| 午夜在线一区二区| 亚洲免费高清| 欧洲激情综合| 欧美精品激情| 欧美日韩日本国产亚洲在线| 日韩在线观看| 欧美成a人国产精品高清乱码在线观看片在线观看久 | 快播电影网址老女人久久| 高清av一区| 麻豆mv在线观看| 黄色aa久久| 国产精品国产一区| jizzjizz中国精品麻豆| 黑人精品一区| 日韩在线中文| 欧美在线亚洲综合一区| 亚洲综合欧美| 色综合视频一区二区三区日韩| 日本在线不卡视频| 国产精品一在线观看| 久久久久97| 国产成人免费| 久久国产小视频| 美女尤物久久精品| 亚洲精品系列| 国产精品一区二区免费福利视频| 麻豆中文一区二区| 蜜臀国产一区| 欧美日韩国产探花| 中文字幕一区二区三区日韩精品 | 日韩欧美一区二区三区在线观看 | 亚洲一区黄色| 中文字幕一区二区三区在线视频| 亚洲精品美女91| 国产亚洲欧美日韩精品一区二区三区| 国产精品一页| 毛片在线网站| av亚洲在线观看| 亚洲狼人精品一区二区三区| 青青伊人久久| 麻豆精品一区二区综合av| 日本一二区不卡| 伊人网在线播放| 亚洲午夜久久久久久尤物 | 一区免费视频| 亚洲精品在线二区| 国产精成人品2018| 肉色欧美久久久久久久免费看| 图片区亚洲欧美小说区| 日韩中文字幕无砖| 精品三级久久久| 免费av一区| 日韩精品久久理论片| 国产精品成久久久久| 欧美日韩第一| 亚洲精品影院在线观看| 久久久久久久久成人| 999国产精品视频| 日韩激情啪啪| 成人在线视频区| 黄色日韩在线| 国产精品99久久久久久董美香| 国产精品字幕| 日韩欧美精品一区二区综合视频| 国产精品天堂蜜av在线播放| 日韩不卡在线| 久久精品99国产精品日本| 精品欧美一区二区三区在线观看| 亚洲精品在线二区| 婷婷激情一区| 亚洲欧美日韩国产一区| 精品中文字幕一区二区三区| 黄色成人精品网站| 久久精品网址| 亚洲精品影视| 欧美日韩在线网站| 国产人成精品一区二区三| 欧美一级精品| 嫩草伊人久久精品少妇av杨幂| 亚洲激情av| 福利一区二区| 日韩av电影一区| 婷婷六月综合| 国产成人精品一区二区三区在线| 免费在线视频一区| 韩国女主播一区二区三区|