繁体   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