最近在給別人講解Java並發編程面試考點時,為了解釋鎖對象這個概念,想了一個形象的故事。后來慢慢發現這個故事似乎能講解Java並發編程中好多核心概念,於是完善起來形成了了這篇文章。大家先忘記並發編程,只聽我給你講個故事。 故事可能比較奇怪。有這么一個學校,里面有好多好多人,我們簡單 ...
日志服務需要提供的功能有: 可以從外部安全地開啟和關閉日志服務 可以供多個線程安全地記錄日志消息 在日志服務關閉后,可以把剩余未記錄的消息寫入日志文件 在上面的例子中,有以下幾個地方值得注意: 日志服務不應該在收到關閉消息時立即停止,而應該將消息隊列中剩余的消息寫入到日志文件之后再關閉。如果決定丟棄這些消息,那么應該先清空消息隊列,否則調用log方法的線程會一直阻塞 上例中使用isShutdow ...
2015-11-10 17:59 0 2208 推薦指數:
最近在給別人講解Java並發編程面試考點時,為了解釋鎖對象這個概念,想了一個形象的故事。后來慢慢發現這個故事似乎能講解Java並發編程中好多核心概念,於是完善起來形成了了這篇文章。大家先忘記並發編程,只聽我給你講個故事。 故事可能比較奇怪。有這么一個學校,里面有好多好多人,我們簡單 ...
最近筆者接觸到串口編程,網上搜了些資料,順便整理一下。網上都在推薦使用Java RXTX開源類庫,它提供了Windows、Linux等不同操作系統下的串口和並口通信實現,遵循GNU LGPL協議。看起來不錯,寫個例子試試。 准備運行環境 下載RXTX RXTX下載地址是:http ...
從一個簡單的使用TCP例子開始socket編程,其基本步驟如下: server client ...
1、網絡中進程之間如何通信? 本地的進程間通信(IPC)有很多種方式,但可以總結為下面4類: 消息傳遞(管道、FIFO、消息隊列) 同步(互斥量、 ...
一個最簡單的Java程序有多少線程? 通過下面程序可以計算出當前程序的線程總數。 上面有兩種計算線程數的方式: 1、通過java線程管理器MXBean 2、直接通過線程組獲取線程總數,要注意需要獲取根線程組的總數,否則不准確 注意,如果JetBrain IJ來Run這個程序 ...
概述 java cocurrent包提供了很多並發容器,在提供並發控制的前提下,通過優化,提升性能。本文主要討論常見的並發容器的實現機制和絕妙之處,但並不會對所有實現細節面面俱到。 為什么JUC需要提供並發容器? java collection framework提供了豐富的容器,有map ...
安全性和活躍度通常相互牽制。我們使用鎖來保證線程安全,但是濫用鎖可能引起鎖順序死鎖。類似地,我們使用線程池和信號量來約束資源的使用, 但是缺不能知曉哪些管轄范圍內的活動可能形成的資源死鎖。Java應用程序不能從死鎖中恢復,所以確保你的設計能夠避免死鎖出現的先決條件是非常有價值。 一.死鎖 ...
1、什么是閉鎖? 閉鎖(latch)是一種Synchronizer(Synchronizer:是一個對象,它根據本身的狀態調節線程的控制流。常見類型的Synchronizer包括信號量、關卡和閉鎖)。 閉鎖可以延遲線程的進度直到線程線程到達終止狀態。一個閉鎖工作起來就像是一道大門:直到 ...