java.util.concurrent

    0熱度

    2回答

    Q1)我創建數據庫連接池的鏈表基於實現。需要使用add()或addFirst()從列表和線程釋放連接的線程需要進行連接輪詢()。在測試過程中,我發現即使一個線程使用synchronized(ll){some code here}鎖定列表,其他線程也能夠從列表中輪詢()出連接。這個測試使我得出結論:只有{}中的代碼塊將被保證一次由1個線程執行,但是對象本身即ll將不會被鎖定,而其他線程仍然可以在其上

    0熱度

    1回答

    我是java的執行程序包的新手。我想從spring rabbitmq(amqp)中將創建線程的責任委託給另一個任務(類)。目前我在異步MesageListener的onMessage()方法內創建內層可運行類,以便在rabbitmq主題交換隊列中有多條消息時實現並行性。該功能適用​​於我。我想分開可運行的代碼段形式onMessage(Message message)方法。以下是代碼。 packag

    1熱度

    2回答

    我需要做這樣的事情: ExecutorService executor = Executors.newFixedThreadPool(2); CompletionService<Boolean> completionService = new ExecutorCompletionService<>(executor); int i = 0; while (i < 40) { com

    0熱度

    1回答

    我想模擬單臺機器上運行多個服務器和客戶端。 我打算使用Java的併發包創建多個線程的服務器和客戶端。 我將區分服務器和客戶端彼此,其中只使用端口號。 說,我將有一系列的服務器800XX端口和客戶端900XX端口。 我需要知道我所做的是否正確。有沒有更好的方法來做到這一點?

    1熱度

    1回答

    我已經實現了一個Singleton類「SingleTaskExecutor」,它使用SingleThreadExecutor一次執行一個任務。該類用於按時間順序執行異步數據庫操作。一切工作正常。但是現在我們有一個用例,我們需要暫停該服務一段時間,執行一些操作,然後恢復服務。不知道如何暫停/恢復服務。這裏是我的代碼: public class SingleTaskExecutor { p

    2熱度

    1回答

    我在另一個Map中有一個Map。我不得不根據條件來優化我的代碼。但編譯器抱怨它。是否有另一種方式得到我想要 AtomicBoolean flag1 = new AtomicBoolean(true); AtomicBoolean flag2 = new AtomicBoolean(true); AtomicInteger count = new AtomicInteger(0); s.g

    1熱度

    1回答

    我的同事告訴我,在高併發性mysql無法正確處理更新,例如, update product set count = count - 1 where id = ? and count > 0; 也許有計數小於0,我覺得他是錯的,所以我寫下面的代碼來證明這一點。 int nThreads = 140; //less than max_connections 151 ExecutorSer

    1熱度

    1回答

    我是新來玩框架和Java8。我正在嘗試在Play中編寫一個簡單的Web服務,它符合Asynch模型,並允許Web服務調用快速返回,爲異步線程留下沉重的負擔。 我有一個非常基本的操作 public CompletionStage<Result> getPeople() { } 在調用真正的處理必須從數據庫中加載的人的數據。 db方法是 List<People> people = dbServ

    0熱度

    2回答

    我在一個簡單的生產者 - 消費者場景中管理一個LinkedBlockingQueue 2線程。 在消費者線程中,我使用take()即我想在元素進入隊列時阻止使用者。 如果在生產者線程中,我使用offer()添加到隊列中,而不是put()?會導致任何問題嗎? 我的意思是,使用take()意味着我應該也使用put? 我想不是,但我想完全確定。

    1熱度

    1回答

    我有一個要求鎖定每個實體ID的某些功能。 private final ConcurrentMap<Long, Lock> idLocks = Maps.newConcurrentMap(); public void doSmth(Long id){ ReentrantLock newLock = new ReentrantLock(); Lock lock = prLock