原创 Java多線程與併發應用-(3)-傳統線程通信技術及生產者消費者模式

生產者/消費者問題是一個經典的線程同步以及通信的案例。該問題描述了兩個共享固定大小緩衝區的線程,即所謂的“生產者”和“消費者”在實際運行時會發生的問題。生產者的主要作用是生成一定量的數據放到緩衝區中,然後重複此過程。與此同時,消費者也在緩

原创 Java多線程與併發應用-(8)-Callable和Future

demo1: 使用FutureTask和Callable,獲取一個線程的返回值。在獲取返回值前可以做其他事,在Future.get()時阻塞,也可調用 get(long timeout, TimeUnit unit)方法設置在等待long

原创 Java多線程與併發應用-(1)-定時任務1-Timer的使用

真是受夠了多線程的問題,今天開始就自己總結一下             Timer類和TimerTask類配合使用。Timer負責控制線程的執行時間,TimerTask中寫業務代碼,他實現了Runnable接口。但run()方法並沒有實現

原创 Java多線程與併發應用-(11)-用Lock+Condition實現1,2,3 三個模塊按順序執行。

package com.lipeng; import java.util.concurrent.locks.Condition; import java.util.concurrent.locks.Lock; import java.u

原创 Java多線程與併發應用-(9)-鎖lock+條件阻塞conditon實現線程同步通信

一. lock可以代替synchronized關鍵字實現互斥功能。使用方法如下: Lock l = ...; l.lock(); try { // access the resource prote

原创 Java多線程與併發應用-(10)-java阻塞隊列實現ArrayBlockingQueue

ArrayBlockingQueue是阻塞隊列接口BlockingQueue的一種實現。 它的讀有三種情況:1.如果讀不到立即返回空,2.如果讀不到等待直到返回結果(或超時,拋異常),3.如果讀不到數據拋出異常 相對應的,1.容器滿了無法

原创 Java多線程與併發應用-(7)-線程池

文章轉自:http://blog.csdn.net/ghsau/article/details/7443324 注意: 1. 必須手動shutdown線程。線程中的線程執行完任務後不會自動停止。需要手動操作 showdown():全部任

原创 Java多線程與併發應用-(5)-如何優雅的使用ThreadLocal類

內容來自,張孝祥老師的張孝祥-Java多線程與併發庫高級應用》視頻教程 package com.lipeng; public class MyThreadLocalTest2 { private final static MyTh

原创 Java多線程與併發應用-(4)-傳統線程通信技術試題

package com.lipeng; public class LoopDemo { /** * 線程A循環10次,然後線程B循環100次,然後A再循環10次,然後B再循環100次。如此循環50次。 * lipeng

原创 Java多線程與併發應用-(2)-線程互斥synchronized

首先請看下面的例子: package com.lipeng; public class SynchronizedDemo { public static void main(String[] args) { final Prin

原创 Java多線程與併發應用-(6)-多個線程之間共享對象和數據的方式

此內容來自張孝祥老師的java多線程與併發庫高級應用 如果多個線程執行的代碼相同,可以使用同一個Runnable對象,這個Runnable對象中有那個共享數據。 如果多個線程執行的代碼不同,這時候需要用不同的Runnable對象。將共享對

原创 Oracle按時間統計sql

1.統計某天24小時中,每個小時段的訂單數: select count(*), to_char(to_date(create_dt, 'yyyy-mm-dd hh24:mi:ss'), 'yyyy-mm-dd