原创 Thread 線程共享-ThreadLocal 原理分析、OOM問題及線程安全問題分析

線程共享 synchronized 關鍵字 控制方法或代碼塊同一時刻只有一個線程訪問。鎖必須是一個Object對象,並且多線程只有鎖同一個對象時才能保證同一時刻只有一個線程訪問代碼塊 volatile 關鍵字,多用於變量上。多線程訪問的變

原创 Thread 線程協作-Object對象的wait、notify和notifyAll方法原理,通過notifyAll和wait方法完成生產者和消費者模型案例

線程協作 所謂線程協作也就是多線程併發編程中,線程與線程之間完成同一個業務邏輯,期間可能有線程等待、線程通知。 線程等待實現方式 Thread線程類的sleep方法,等待指定時間後自動喚醒線程。Object類的wait 方法,線程睡眠後只

原创 Thread Runnable線程及stop()、interrupt()、sleep()等方法講解

如何開啓線程 開啓線程2種方式: 自定義類繼承Thread類,重寫run方法;new 自定義類().start() 自定義類實現Runnable接口,實現run方法;new Thread(new 自定義類()).start() Threa

原创 java 線程 run和start方法,線程生命週期及join和yield方法,守護線程

線程 run和start方法說明 run方法:其實是Runnable接口方法,只是個接口規範,業務邏輯都寫在這個方法中(線程結束判斷以及具體業務邏輯) start方法:Thread 線程類封裝的規範,一個線程實例只有調用了start方法,

原创 JDK 中CAS(原子)操作工具類 AtomicInteger AtomicIntegerArray AtomicReference等等

CAS操作(原子操作,底層使用處理器的CAS指令),內部通過樂觀鎖(舊值和新值比較或版本號比較)實現, 缺點:ABA問題:值改成其他值後又改回來了,從而不知道是否改過(只控制結果,不能夠控制過程)。解決方案添加版本號(默認舊值和新值進行比

原创 Future ,FutrueTask,ForkJoinPool 等異步多線程執行工具案例

1、Future 異步執行獲取執行結果 我們知道通過Thread+Runnable可異步執行某項操作,但是如何異步執行後,並獲取執行結果? Thread和Runnable並沒有提供獲取執行結果的操作。 Runnable 是對任務的封裝。

原创 CompletableFuture 和 CompletionStage JDK1.8新特性異步執行任務控制

1、CompletableFuture 和 CompletionStage Future 獲取結果需要堵塞get()或輪詢isDone() ,未實現異步執行完後採用通知或回調的方法, JDK8中提供了CompletableFuture與C

原创 ZK分佈式鎖實現

1、鎖的實現方式1.1、解決資源競爭問題 性能最低,儘量少用臨界區:通過對多線程的串行化來訪問公共資源或一段代碼Synchronized 修身的Java方法,其實就是Synchronized對 this或類(靜態類) 的鎖定1.2、互斥量

原创 C#詳細講解委託_事件

1、委託》c/c++中的函數指針:函數指針》函數入口地址》函數操作 委託在c#中的不同就是面向對象,是引用類型(應用指定方法的地址),必須是先定義後實例化 1.1定義委託 delegate int someDelegate (int i,

原创 Win10安裝SQL2012或SQL2014報錯

前2天公司全部換了新電腦,都是高配置,系統都是Win10企業版。本人也是微軟程序猿,所有SQLServer是必不可少的,但是在安裝SQL2012時老是報錯,數據庫引擎服務實例報錯、全文索引掃描錯誤等等,安裝了2次都是相同問題,後來查看好多

原创 ZK分佈式鎖二

是在zK分佈式鎖的基礎上優化,之前是所有線程是對同一個節點進行監視,只要釋放鎖,就會通知其他所有線程。高併發容易出現資源競爭激烈情況。優化是在一個線程只關心自己的上一個節點鎖,釋放鎖的時候只會通知一個線程取獲取鎖,這樣減少了資源的競爭。如

原创 C#關於操作符的重載

1、操作符重載: 一元操作法重載:一個參數 二元操作符重載:兩個參數 用戶定義的數據類型轉換:爲了滿足需求把一種類型轉化爲另一種類型 2、操作符的開始必須以public  static修飾 對雙目運算的操作符必須同時重載,不能只重載一個:

原创 C#帶參數的線程說明

1、實現方法:參數必須實現爲object類型參數。使用ParameterizedThreadStart運行在線程上的參數對象。 現在很少用此方法,並且參數只能是一個參數。         static void zhang(objec

原创 .Net Core 環境搭建

安裝環境工具說明: 我的機子是Windows 7 64位系統 VS2015:.net 開發IDE,默認安裝即可 .NET Core Installer(RC2):.net 運行時(和.net jre一樣,支持.net軟件運行在OS上) .