原创 Java線程池總結和使用

線程池介紹 在實際開發中是極不推薦每次都手動去創建一個線程執行任務,因爲每次都創建一個新的線程會造成很大的開銷。所以線程池的作用就是把創建好的線程存起來進行復用,每次任務都由線程池中的這些線程就行調用,這樣不僅避免了重複創建帶來的開銷,也避

原创 Java中CountDownLatch底層原理

CountDownLatch底層原理 CountDownLatch也是一個java.util.concurrent包中的類,可以設置一個初始數值,在數值大於0之前讓調用await()方法的線程堵塞住,數值爲0是則會放開所有阻塞住的線程。底層

原创 Java中ReentrantLock底層原理

ReentrantLock底層原理 ReentranLock是一個支持重入的獨佔鎖,在java.util.concurrent包中,底層就是基於AQS實現的,所以下面回設計到AQS的一些東西,如果還不瞭解的可以先看這篇 Java AQS底層

原创 Java AQS底層原理解析

AQS底層原理 AQS(AbstractQueuedSynchronizer)是一個抽象同步隊列,JUC(java.util.concurrent)中很多同步鎖都是基於AQS實現的。 AQS的基本原理就是當一個線程請求共享資源的時候會判斷是

原创 Spring Boot中配置定時任務、線程池與多線程池執行的方法

這篇文章主要給大家介紹了關於Spring Boot中配置定時任務、線程池與多線程池執行的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用Spring Boot具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧

原创 Spring Boot下配置定時任務及線程池和多線程池執行

配置基礎的定時任務 最基本的配置方法,而且這樣配置定時任務是單線程串行執行的,也就是說每次只能有一個定時任務可以執行,可以試着聲明兩個方法,在方法內寫一個死循環,會發現一直卡在一個任務上不動,另一個也沒有執行。 啓動類 添加@Enabl

原创 JAVA代理模式的理解和應用

代理模式: 代理模式通俗一點的解釋就是在操作一個對象和對象中的方法時,不是直接操作這個對象,還是通過一個代理對象來操作這個實際的目標對象。應用場景一般是需要在執行某個已經寫好的方法前後再添加一段邏輯,比如執行方法前打印日誌,或者在執行方法之

原创 解決"併發下查詢並更新帶來的問題"

場景: 在日常開發中經常遇到先根據條件判斷某條數據是否存在,如果不存在的話就插入,如果存在的話就更新或提示異常。一般代碼的模式都寫成下面這個樣子,是一種很常見的寫法,但是在併發情況下很容易會重複插入兩條數據,大概的情況就是第一個請求進來,沒

原创 Docker的基本使用

拉取鏡像: 上篇文章 Docker入門安裝教程 中講了Docker最重要的一部分就是就是Docker鏡像,我們所有的容器都是基於Docker鏡像來創建的,這樣才能保證所有同一個鏡像創建出來的容器是一模一樣的。而我們的容器則放在倉庫中,Doc

原创 Docker入門安裝教程

Dokcer介紹: Docker是一種容器相關的技術,簡單來說你可以把它當做一個微型的獨立系統,在這個系統裏面運行各種軟件,然後又在linux服務器上或者是電腦上運行這個系統,這個系統就被稱爲Docker容器,而運行Docker容器的機器就

原创 Java 8之stream分組和分區

前言: 在前面幾篇文章中主要介紹了stream中的篩選、求和、排序以及生成stream的方式,今天還要講一個很重要的功能,那就是分組和分區。分組分區實際上就是在篩選的基礎上把整個流裏面的數據分爲不同的組。 測試數據: 1.創建個Studen