マルチスレッドを扱うのは初めてです。私はある点で混乱しており、説明を求めています。メインプログラムには次のものがあります。
String hostname = null;
ExecutorService threadExecutor = Executors.newFixedThreadPool(10);
MyThread worker = null;
while(resultSet.next()) {
hostname = resultSet.getString("hostName");
worker = new MyThread(hostname);
threadExecutor.execute( worker );
}
threadExecutor.shutdown();
while (!threadExecutor.isTerminated()) {
threadExecutor.awaitTermination(1, TimeUnit.SECONDS);
}
runnable を実装するクラスは次のとおりです。
public class MyThread implements Runnable{
String hostname=null;
MyThread (String hostname) {
this.hostname=hostname;
System.out.println("New thread created");
}
public void run() {
Class1 Obj1 = new Class1();
try {
obj1.Myfunction(hostname);
} catch (Exception e) {
System.out.println("Got an Exception: "+e.getMessage());
}
}
}
ホスト名という変数があります。Myfunction
すべてのスレッドが実行する必要がある関数に渡す必要があるため、すべてのスレッドはこの変数を取得する必要があります。
コンストラクター内で hostname という変数を定義しました。次に、変数hostname
をに送信しましたMyFunction(hostname).
以来、hostname
クラス内で定義されMyThread
ています。次に、引数として送信されたMyfunction
ホスト名は、スレッドのホスト名です。
課題を行う必要があるかどうかわかりませんthis.hostname=hostname
?? いつ単語を書く必要がありthis.
ますか? ホスト名を単語で Myfunction に送信する必要がありますthis.
か?