4

データベースから情報を読み取り、テーブルのすべての行に対して新しいスレッドを作成する 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();
        }

しかし問題は、これが機能していないことです。テーブルの行ごとに新しいスレッドを作成する可能性が必要です。誰でもそれを行う方法を知っていますか

感謝と挨拶

4

3 に答える 3

4

未知のサイズのセット用に動的に成長するコンテナーが必要です- a 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();
}
于 2012-10-10T10:07:12.197 に答える
2

あなたのアイデアは非常識に聞こえますが、Java の SQL 機能を使用して、現在の行数を調べ、その数を使用してスレッドを作成することができます。

于 2012-10-10T10:07:16.003 に答える
1

配列tread[i]の代わりに単純な変数say tだけを使用してみてください。

また、行数が多い場合、行ごとに新しいスレッドを作成すると、メモリがいっぱいになる可能性があります。

于 2012-10-10T10:07:30.587 に答える