原创 有關於 response.setContentType設置請求類型不生效的兩種解決方案

public String test(HttpServletRequest request, HttpServletResponse response) { response.setContentType("applic

原创 併發編程-基礎篇(十二)之概念

什麼是併發?什麼是並行?併發和並行的區別是什麼? 併發是指同一個時間段多個任務同時都在執行,並且都沒有執行結束 並行是指在單位時間內多個任務同時都在執行 區別:時間段不同.併發強調的是在同一時間段,並行強調單位時間段 爲什麼要進行多線

原创 併發編程-基礎篇(二)-線程的通知和等待

wait()函數:當一個線程調用一個共享變量的wait()方法時,該調用線程會被阻塞掛起,並且會釋放當前共享變量的鎖,如果該線程有多個鎖,其他鎖不會被釋放 注意:在線程沒有獲取到鎖的時候,調用wait(),會拋出IllegalMonito

原创 併發編程-基礎篇(三)-線程的通知notify和notifyAll

問題:notify 和notifyAll的區別? public class Thread1 { private static volatile Object resourceA=new Object(); @S

原创 異常:getInputStream() has already been called for this request

異常:getInputStream() has already been called for this request... 造成異常的代碼: 從請求中獲取body參數 BufferedReader reader = request

原创 Navicat 連接docker 中的mysql 出現2003錯誤

前提:1.mysql鏡像啓動,使用$ docker ps 看到有對應的鏡像運行 2.進入到mysql中並查看權限,host爲%表示任何ip都能用 mysql > select host,user,plugin,authenticati

原创 併發編程-基礎篇(八)-守護線程

線程分爲兩類:守護線程和用戶線程;如果你希望在主線程結束後JVM進程馬上結束,那麼在創建線程時可以將其設置爲守護線程.如果你希望在主線程結束後子線程繼續工作,等子線程結束後再進讓JVM進程結束,那麼將子線程設置爲用戶線程 守護線程

原创 併發編程-基礎篇(十三)-鎖的概念

    ReentrantLock 提供了公平鎖 和非公平鎖的實現, 公平鎖: ReentrantLock pairLock =new ReentrantLock(true),公平鎖獲取鎖的順序是按照線程請求鎖的時間早晚來決定的,也就是

原创 線程基礎篇(十五)之使用ReentrantLock實現消費者生產者

/** * @author Dora * @date 2020/4/8 9:55 **/ public class QueueLearn { // 使用讀寫鎖 實現隊列的消費 // 實現一個隊列 static

原创 併發編程-基礎篇(九)-死鎖

死鎖產生的原因: 互斥條件:指線程對已經獲取到的資源進行排它性使用,即該資源同時只由一個線程佔用 請求並持有條件:只一個線程已經持有了至少一個資源,但又提出了新的資源請求,而新資源已經被其他線程佔用,所以當前線程會被阻塞,但阻塞的同時不釋

原创 併發編程-基礎篇(一)之線程的3種實現方式

線程有三種實現方式: 繼承Thread類 優點:在類直接this就能獲取當前線程 缺點:java不支持多繼承 public class Thread1 extends Thread{ public Thread1(){

原创 併發編程-基礎篇(六)-讓出CPU執行篇的yield方法

yield()函數是當前線程請求讓出自己的CPU使用,但是線程調度器可以無條件忽略這個暗示 public class YieldTest implements Runnable { @Override public vo

原创 併發編程-基礎篇(七)-線程中斷

interrupt():中斷線程 isInterrupted():是否中斷線程,如果是返回true,不是返回false Thread.interrupted():是否中斷線程,如果是返回true,不是返回false,不同於isInt

原创 併發編程-基礎篇(四)-等待線程執行終止的join()

join()函數會等待線程處理完事情,才繼續處理其他事情 有關於join 方法的使用 public class Thread1 { public static void main(String[] args) {

原创 線程基礎-有關於ScheduledThreadPoolExecutor線程池

// 延遲|定時進行任務調度的線程池 ScheduledThreadPoolExecutor scheduledThreadPoolExecutor = new ScheduledThreadPoolExecutor