原创 JAVA多線程高併發之ReentrantLock講解lockInterruptibly方法

JAVA中多線程高併發場景下保證線程安全通常都會考慮加鎖。但是在特殊場景下我們也可以採用java.util.concurrent包提供的線程安全的對象,避免加鎖從而達到高效的目的。 但是,這些線程安全的對象僅僅指的是針對於原子性操作是線程

原创 JAVA多線程高併發之ReentrantLock講解lock/unlock/tryLock方法

JAVA中多線程高併發場景下保證線程安全通常都會考慮加鎖。但是在特殊場景下我們也可以採用java.util.concurrent包提供的線程安全的對象,避免加鎖從而達到高效的目的。 但是,這些線程安全的對象僅僅指的是針對於原子性操作是線程

原创 金九銀十來了,你準備好了嗎?

又到一年的金九銀十了,想要跳槽拿高薪的小夥伴你們準備好了嗎?說實話,今年行情並不是特別好,很多企業招人對技術要求越來越高。當然,如果你是真正的大牛請忽視。 本人親身經歷過一些互聯網獨角獸公司面試,需要強調一下,越是大公司越是注重技術基礎、

原创 面試錦集:手寫一個同步類容器之BlockingQueue實現

互聯網大廠面試必考題目: 手寫一個同步類容器,支持多個生產者線程以及多個消費者線程的阻塞調用。採用BlockingQueue實現,我第一次去大廠面試都被難住了!!! package com.container; import java

原创 JAVA選擇排序

選擇排序(Selection sort)是一種簡單直觀的排序算法。它的工作原理是:第一次從待排序的數據元素中選出最小(或最大)的一個元素,存放在序列的起始位置,然後再從剩餘的未排序元素中尋找到最小(大)元素,然後放到已排序的序列的末尾。以

原创 JAVA併發編程下保證車票出售線程安全之ConcurrentLinkedQueue

在併發編程場景下如何保證車票或者商品出售業務是線程安全的? 首先我們就會想到加鎖,來保證出售業務線程安全。但是加鎖勢必會帶來性能上的瓶頸。那麼我們就會思考,還有沒有其它的方式避免加鎖來實現同樣的效果呢? 這裏我們就採用Concurrent

原创 面試錦集:手寫一個同步類容器之wait/notify/notifyAll實現

互聯網大廠面試必考題目: 手寫一個同步類容器,支持多個生產者線程以及多個消費者線程的阻塞調用。採用 wait notify/notifyAll實現。我第一次去大廠面試都被難住了!!! package com.container; im

原创 JAVA手寫一個多線程死鎖

大家都知道多線程併發的時候,我們一般會用到鎖。但是鎖用不好,就會導致死鎖。那麼,死鎖是如何產生的呢? 一般造成死鎖必須同時滿足如下4個條件: 互斥條件:線程使用的資源必須至少有一個是不能共享的。 請求與保持條件:至少有一個線程必須持有一個

原创 十大經典排序算法

排序算法是《數據結構與算法》中最基本的算法之一,排序算法可以分爲內部排序和外部排序,內部排序是數據記錄在內存中進行排序,而外部排序是因排序的數據很大,一次不能容納全部的排序記錄,在排序過程中需要訪問外存。 十大經典排序算法分別是: 1、冒

原创 面試錦集:手寫同步類容器之Lock/Condition await signalAll實現

互聯網大廠面試必考題目: 手寫一個同步類容器,支持多個生產者線程以及多個消費者線程的阻塞調用。採用 Lock/Condition await signalAll實現,更精確定位喚起的線程。我第一次去大廠面試都被難住了!!! packag

原创 JAVA併發編程下保證車票出售線程安全之synchronized鎖

在併發編程場景下如何保證車票或者商品出售業務是線程安全的? 首先我們就會想到加鎖,來保證出售業務線程安全。但是加鎖勢必會帶來性能上的瓶頸。那麼我們就會思考,還有沒有其它的方式避免加鎖來實現同樣的效果呢? 這裏我們帶着這個問題,先採用常見的

原创 單例模式之雙檢鎖/雙重校驗鎖

談到單例模式,首先需要說明一下,單例模式(Singleton Pattern)是JAVA中最簡單的設計模式之一。這種類型的設計模式屬於創建型模式。保證一個類僅有一個實例,並提供一個訪問它的全局訪問點。 要實現一個線程安全的單例模式有多種做

原创 單例模式之靜態內部類

談到單例模式,首先需要說明一下,單例模式(Singleton Pattern)是JAVA中最簡單的設計模式之一。這種類型的設計模式屬於創建型模式。保證一個類僅有一個實例,並提供一個訪問它的全局訪問點。 要實現一個線程安全的單例模式有多種做

原创 面試錦集:JAVA中存在i+1小於i的情況嗎?

JAVA中存在i+1<i的情況嗎,請代碼實現並詳細說明? 面試中被問到這個問題,小夥伴們是不是很疑惑,此時內心是不是在想WHAT,發生了什麼,這麼多年的數學難道白學了。很顯然在JAVA中是存在的,我們這裏直接上代碼。   package

原创 關於作者

       大家好,我是小輝哥,先後在廣州、上海等地從事軟件開發工作。從事IT互聯網領域近10年,主要從事JAVA語言開發,擅長服務端開發、網絡爬蟲、算法、數據結構、多線程、高併發、分佈式以及微服務等領域。同時對Groovy、PHP、P