原创 Java線程池的原理

一、線程池的特點 線程池做的工作主要是控制運行的線程的數量,處理過程中將任務放入隊列,然後在線程創建後啓動這些任務,如果線程數量超過了最大數量超出數量的線程排隊等候,等其它線程執行完畢,再從隊列中取出任務來執行。他的主要特點爲:線

原创 Java線程池工作過程

【Java線程池工作過程】 線程池剛創建時,裏面沒有一個線程。任務隊列是作爲參數傳進來的。不過,就算隊列裏面有任務,線程池也不會馬上執行它們。 當調用 execute() 方法添加一個任務時,線程池會做如下判斷: a) 如

原创 Java如何在兩個線程之間共享數據?

Java 裏面進行多線程通信的主要方式就是共享內存的方式,共享內存主要的關注點有兩個:可見性和有序性原子性。Java 內存模型(JMM)解決了可見性和有序性的問題,而鎖解決了原子性的問題,理想情況下我們希望做到“同步”和“互斥”

原创 Java中 volatile 關鍵字的作用

Java 語言提供了一種稍弱的同步機制,即 volatile 變量,用來確保將變量的更新操作通知到其他線程。volatile 變量具備兩種特性,volatile 變量不會被緩存在寄存器或者對其他處理器不可見的地方,因此在讀取 v

原创 Flutter實現繪製芬香小程序二維碼海報,並保存到相冊

效果展示 準備工作 引入依賴插件 qr_flutter: ^3.0.1 cached_network_image: ^1.0.0 導入圖片處理包 import 'dart:ui' as ui; 實現代碼 入口文件 sha

原创 Java中synchronized 和 ReentrantLock 的區別?

兩者的共同點: 都是用來協調多線程對共享對象、變量的訪問 都是可重入鎖,同一線程可以多次獲得同一個鎖 都保證了可見性和互斥性 兩者的不同點: 4. ReentrantLock 顯示的獲得、釋放鎖,synchronized 隱式

原创 Java線程池工作過程(芬香邀請碼:BXDC88)

【Java線程池工作過程】 線程池剛創建時,裏面沒有一個線程。任務隊列是作爲參數傳進來的。不過,就算隊列裏面有任務,線程池也不會馬上執行它們。 當調用 execute() 方法添加一個任務時,線程池會做如下判斷: a) 如

原创 Java中 volatile 關鍵字的作用【芬香邀請碼:BXDC88】

Java 語言提供了一種稍弱的同步機制,即 volatile 變量,用來確保將變量的更新操作通知到其他線程。volatile 變量具備兩種特性,volatile 變量不會被緩存在寄存器或者對其他處理器不可見的地方,因此在讀取 v

原创 Java如何在兩個線程之間共享數據?【芬香邀請碼:BXDC88】

Java 裏面進行多線程通信的主要方式就是共享內存的方式,共享內存主要的關注點有兩個:可見性和有序性原子性。Java 內存模型(JMM)解決了可見性和有序性的問題,而鎖解決了原子性的問題,理想情況下我們希望做到“同步”和“互斥”

原创 適合多數人的低成本創業方法(芬香邀請碼:BXDC88)

一、好的環境 隨着移動手機的普及,人的時間變得非常零碎,這些零碎時間被用來刷微信,刷頭條,刷抖音。於是我們每個人都有了自己的圈子,圈子的存在就決定了人與人之間的攀比,這個時候一個人的購物需求就不再完全由自己控制,往往還受周圍朋友同事的

原创 芬香社交電商攻略(含芬香邀請碼 BXDC88 )

京東芬香社交電商攻略 方式一:輸入芬香邀請碼:BXDC88 第一步:微信搜索小程序【芬香社交電商】 第二步:輸入邀請碼【BXDC88】 第三步:授權用戶信息,即可一鍵登陸小程序 第四步:挑選京東商品進行購買吧,下單後記得查看返利

原创 芬香社交電商攻略(含芬香邀請碼)

芬香社交電商攻略 芬香邀請碼:BXDC88 使用教程: 第一步:微信搜索小程序【芬香社交電商】 第二步:輸入邀請碼【BXDC88】 第三步:授權用戶信息,即可一鍵登陸小程序 第四步:挑選京東商品進行購買吧,下單後記得查看返利 小程

原创 Promise在工作中常用的幾種示例

需求1 : 順序執行業務邏輯 // 隨機生成true 或 false 模擬步驟執行結果 function getRondomResult() { let resultArray = [true, false]; return re

原创 SpringMVC動態切換多個數據源解決方案(自測可用)

SpringMVC動態切換多個數據源解決方案 1.數據源配置 <!-- 事務 --> <bean id="transactionManager" class="org.springframework.jdb

原创 js格式化日期時間的工具方法

/** * 格式化日期時間 * @param date * @param pattern 'yyyy-MM-dd hh:mm:ss.S' ==> 2006-07-02 08:09:04.423 */ function forma