簡體   English   中英

根據輸入的數量在while循環中創建多個java線程

[英]create multiple java threads in a while loop depending on the number of inputs

我正在嘗試編寫一個java程序,它從數據庫中讀取信息,並為表的每一行創建一個新線程。 所以我不知道我需要多少線程。 到目前為止我有這個:

        con = DriverManager.getConnection(url, user, passwd);
        pst = con.prepareStatement("select hostname, ipadress, vncpassword from infoscreens");
        rs = pst.executeQuery();
        int i=0;
        while (rs.next()) {
            i++;
            Thread tread[i]  = new Savescreenshots(rs.getString(1),rs.getString(3),rs.getString(2));
            tread[i].start();
        }

但問題是這不起作用。 我需要有可能為表中的每一行創建一個新線程。 劑量任何人都知道如何做到這一點

謝謝和問候

對於一組未知大小,您需要一個動態增長的容器 - 例如: List

List<Thread> threads = new ArrayList<Thread>();
while (rs.next()) {
    Thread tread  = new Savescreenshots(rs.getString(1),rs.getString(3),rs.getString(2));
    tread.start();
    threads.add(thread);
}

此時,程序創建和啟動的所有Thread對象都是threads列表的元素。 你可以枚舉它們並做任何你打算用它們做的事情(例如等待它們完成):

for (Thread thread : threads) {
    thread.join();
}

您的想法聽起來很瘋狂,但您可以做的是使用Java中的SQL功能,找出您當前有多少行,然后使用該數字創建您的線程。

嘗試使用簡單的變量說t而不是數組胎面[i]。

此外,如果行數很大,則為每行創建新線程可能會填充內存。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM