Thread
異なるs の異なるsを渡さないのはなぜRunnable
ですか?
Runnable r1 = new Runnable() { public void run() { /* this is r1 */ } };
Runnable r2 = new Runnable() { public void run() { /* this is r2 */ } };
Thread t1 = new Thread(r1);
Thread t2 = new Thread(r2);
t1.start();
t2.start();
/編集
インスタンス化できるクラスを作成します。
public class MyRunnable implements Runnable {
private final String s;
public MyRunnable(Stirng s) {
this.s = s;
}
public void run() {
// do something with s
}
}
Thread t1 = new Thread(new MyRunnable("s1"));
Thread t2 = new Thread(new MyRunnable("s2"));
t1.start();
t2.start();
/e2
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
public class ExecutorServiceExample {
private static class CallableExample implements Callable<Integer> {
private final Object foo;
private CallableExample(Object foo) {
this.foo = foo;
}
@Override
public Integer call() {
// do something and return it
return foo.hashCode();
}
}
public static void main(String[] args) throws InterruptedException, ExecutionException {
ExecutorService e = Executors.newFixedThreadPool(2);
Future<Integer> f1 = e.submit(new CallableExample("foo"));
Future<Integer> f2 = e.submit(new CallableExample("bar"));
System.out.println(f1.get());
System.out.println(f2.get());
e.shutdown();
}
}
これは、フレームワークに関する優れたチュートリアルExecutor
です。