我有一個代碼,它爲特定學生id插入特定學生ID的加載過程。 我有大約500個學生ID,必須經過完全相同的程序。 我想在這裏使用多線程,因爲我不想爲一個學生id加載數據。 如何在此場景中使用多線程或在此場景中使用多線程。 這裏我怎麼能在多線程中使用這個龐大的代碼。在java中使用多線程
回答
這裏不要使用多線程。這將需要一個簡單的任務,並使其更加複雜。對於500條記錄,一次只做一條。如果您確實必須使用JDBC批處理來減少數據庫命中次數。
這裏有什麼問題。因爲我有一個多處理器系統,不應該在這裏線程幫助。不會運行多個線程將能夠並行加載每個學生id,而不是一個接一個,這將節省時間。 – 2012-04-11 04:31:58
其中500名學生,我必須執行加載,每個sudent將有數千記錄與一名特定學生相關聯。它不是500條記錄。 – 2012-04-11 04:40:10
仍然沒有區別。數據庫可能是多線程的,並且會適當地分配CPU功率。這是數據庫擅長的。開放500個連接的成本,即使你可以獲得這麼多,也會減少任何節省。您問題中的信息相當稀少,您還沒有提供任何可能表明多線程處於保證狀態的信息。你過分分析並參與過早的優化。嘗試單線程,然後適應,如果它真的太慢。 – 2012-04-11 06:12:14
聽起來很像「生產者/消費者」模式。它維基百科的文章有一個合理的Java例子,開始從:
http://en.wikipedia.org/wiki/Producer-consumer_problem
,並確保每個線程都有自己的數據庫連接(他們通常不是線程安全的)。
如果你真的覺得你需要的並行訪問數據庫的性能,那麼你將需要:
- 要在線程將持有的數量有限制使用
ThreadPool
。 - 每個線程必須保持連接到數據庫的
ThreadLocal
。 - 每個線程必須保存一條
ThreadLocal
語句才能執行插入操作。
這並不簡單,但它當然可以做到。請確保你確實需要這樣做。首先要仔細研究配料,看看這是否有幫助。
如果您有興趣,我會盡力在稍後發佈一些示例代碼。
感謝您的答覆。請給我發表一些相同的示例代碼。並且你的意思是說,數據庫的連接對象應該是每個線程的獨佔,並且數據庫語句應該在線程內創建。爲什麼我應該創建一個線程池。我只是計劃在整個工作中有3-4個線程。 – 2012-05-02 09:46:51
@guatam - 你正在尋求大量的代碼。很抱歉,我現在沒有時間將代碼簡潔和有價值地整理在一起。 [Here](http://stackoverflow.com/q/9440505/823393)是一個有'ThreadLocal' db連接示例的問題。請閱讀那裏的評論。 – OldCurmudgeon 2012-05-02 11:22:35
- 1. 如何在同一類中使用多線程Java多線程?
- 2. 在java中使用多線程?
- 3. 在Java中使用多個線程
- 4. 如何在Java中使用多線程
- 5. java - 多個http請求同時在java中使用多線程
- 6. Java多線程中如何使用CountDownLatch?
- 7. 讀取使用多線程Java中
- 8. java中有多線程的多線程
- 9. 多線程Java中
- 10. 使用JNI從多線程調用Java,多線程
- 11. 多線程在Java中使用3個一線
- 12. 如何在使用java的多線程中使用log4j?
- 13. Java單線程CPU使用和多線程CPU使用
- 14. 在java中使用多線程在文件中寫入值
- 15. 使用信號量在Java中進行多線程編程
- 16. Java線程(多線程)
- 17. Java中的多線程應用程序?
- 18. Java:多線程
- 19. java多線程
- 20. Java多線程
- 21. 多線程|| Java
- 22. java多線程
- 23. 多線程java
- 24. Java多線程
- 25. 在Java程序中實現多線程
- 26. (Java多線程)如何在多線程中傳遞參數?
- 27. 在STA線程中使用多線程COM對象線程
- 28. 在多線程程序中使用exprtk
- 29. 在多線程程序中使用pthread_mutex
- 30. java編程和java單線程多線程問題(單線程與多線程)
你試過了什麼?如果你有一臺功能強大的機器和任務的粒度(這些信息是真實的,假設學生規模可以增長),多線程技術將會很有幫助。提示:創建線程池(使用Executors),創建任務並將任務提交到線程池。另外,讓數據庫批量提交。 – Scorpion 2012-04-11 04:23:44
我還沒有使用多線程的程序這個large.That是我問的原因。 – 2012-04-11 04:32:45
「負載」是什麼意思?你有數據庫嗎? – trutheality 2012-04-11 04:33:52