原创 Java多線程之生產者消費者問題:使用synchronized 關鍵字解決生產者消費者問題

        今天看了一片博文,講Java多線程之線程的協作,其中作者用程序實例說明了生產者和消費者問題,但我及其他讀者發現程序多跑幾次還是會出現死鎖,百度搜了下大都數的例子也都存在bug,經過仔細研究發現其中的問題,並解決了,感覺有意

原创 Java多線程之生產者消費者問題:使用重入鎖、條件變量優雅地解決生產者消費者問題

        Java5中新增了大量線程同步的功能,比如顯式Lock,讀寫鎖ReadWriteLock,條件變量Condition等,雖然這些功能使用之前的synchronized同步關鍵字都可能實現,但自己使用同步關鍵字不僅管理混亂,

原创 Java多線程之生產者消費者問題:使用阻塞隊列更優雅地解決生產者消費者問題

前一篇文章講了如何使用java5中的重入鎖和條件變量優雅地解決生產者消費者問題,本文將繼續探究java併發包(concurrent),尋求更好的解決方案。 java併發包中提供了阻塞隊列(BlockingQueue),查看該類的註釋說明,

原创 Java多線程:線程池簡介及線程池之坑

線程池簡介 自JDK1.5,Java吊炸天的併發包就提供線程池java.util.concurrent.ThreadPoolExecutor ,先來看看其各個字段的含義: corePoolSize 核心線程數,指保留的線程池大小(不超過

原创 Java多線程之使用volatile優雅地實現單例

關於volitale關鍵字 volitale即是揮發物,被該關鍵字修飾變量的值發生改變時,會導致該變量的CPU緩存失效,必須CPU需要重新去內存拉取最新的值。 該關鍵字保證了變量的可見性(用一句術語:對於變量的寫入操作總是happens

原创 Java多線程之生產者消費者問題<三>:使用阻塞隊列更優雅地解決生產者消費者問題

前一篇文章講了如何使用java5中的重入鎖和條件變量優雅地解決生產者消費者問題,本文將繼續探究java併發包(concurrent),尋求更好的解決方案。 java併發包中提供了阻塞隊列(BlockingQueue),查看該類的註釋說明,

原创 Java多線程之併發容器:CopyOnWrite到底幹啥用的

CopyOnWrite從字面上理解就是寫入的時候做複製操作。而CopyOnWrite是一個Java5之後出現的併發容器,目的是爲了提高併發的存取效率。對比CopyOnWrite、ArrayList和Vector源碼,可以發現Vector是

原创 Java多線程之生產者消費者問題<一>:使用synchronized 關鍵字解決生產者消費者問題

        今天看了一片博文,講Java多線程之線程的協作,其中作者用程序實例說明了生產者和消費者問題,但我及其他讀者發現程序多跑幾次還是會出現死鎖,百度搜了下大都數的例子也都存在bug,經過仔細研究發現其中的問題,並解決了,感覺有意

原创 關於Spring集成JSF是的問題

今天我使用Spring 和 JSF集成是遇到了一個問題:FacesContextUtils.getWebApplicationContext(FacesContext.getCurrentInstance()) 得到的Applicati

原创 Java多線程之線程協作

無意中在一篇文章中看到一個面試題,題目內容爲:現有一個統計任務,需要3個線程完成,在這三個線程完成後由一個線程完成最後的統計報告工作,寫出大概代碼。 其實多線程問題都可以從兩個角度考慮實現,一種是java5之前的同步關鍵字去實現,另一種

原创 Java實現Socket長連接和短連接

1概念 Socket:socket實際上是對TCP/IP進行的封裝,我們可以使用socket套接字通過socket來傳輸。首先我們需要明白的一個概念就是通道,簡單地說通道就是兩個對端可以隨時傳輸數據的信道。我麼常說的所謂建立socket連

原创 Java多線程之生產者消費者問題<二>:使用重入鎖、條件變量優雅地解決生產者消費者問題

        Java5中新增了大量線程同步的功能,比如顯式Lock,讀寫鎖ReadWriteLock,條件變量Condition等,雖然這些功能使用之前的synchronized同步關鍵字都可能實現,但自己使用同步關鍵字不僅管理混亂,

原创 在mysql workbench中建立存儲過程

新手玩mysql stored procedure(存儲過程),期間遇到了不少麻煩,爲此貼出來,希望能爲也正在玩存儲過程的人提供一個demo。歡迎拍磚。 /*特別註明:下邊的SQL語句都是用test數據庫*/ use test; crea

原创 Jrebel 體驗

初次用 jrebel ,還糾結了好久沒用起來,主要因爲jrebel 收費,下面貼出jrebel 部署(有參考別人的成份): jrebel是一個插件,只要將它部署到相應服務器上即可:window --  preferences -- ser

原创 lucene的加鎖機制和LockObtainFailedException的異常

lucene的加鎖機制 lucene分爲兩種鎖,writer.lock鎖和commit.lock鎖(具體可以自己查,不多講), 這裏主要說說writer鎖,writer鎖主要是爲了控制多個writer對同一索引目錄的寫入 或者reader