私がする必要があるのは、サイズ 3 のFixedThreadPoolを使用し、それを使用して ThreadName を出力し、指定された時間間隔内でランダムな時間スリープ状態にし、完了時に起動していることを出力することです。スレッドごとに実行する必要がありますが、3 つのスレッドすべてが一緒に出力されます。
望ましい出力: pool-1-thread-1 800 ミリ秒から 1000 ミリ秒の間のランダムな時間間隔でスリープ状態になる
pool-1-thread-1 はスリープ状態で終了
pool-1-thread-2 800 ミリ秒から 1000 ミリ秒の間のランダムな時間間隔でスリープ状態になります
pool-1-thread-2 はスリープ状態で終了
pool-1-thread-3 800 ミリ秒から 1000 ミリ秒の間のランダムな時間間隔でスリープ状態になります
pool-1-thread-3 スリープ状態
FixedThreadPool のみを使用する必要がある
import java.util.Random;
import java.util.concurrent.*;
class Sleep implements Runnable
{
public void run()
{
Random ran = new Random();
int randomnumber = ran.nextInt(1000-800+1)+800;
System.out.print(Thread.currentThread().getName()+" ");
System.out.println("Going to sleep for random amount of time interval between 800 ms and 1000ms");
try
{
Thread.sleep(randomnumber);
}
catch(Exception e)
{
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName()+" done sleeping");
Thread.yield();
}
}
public class Ch6Ex3
{
public static void main(String[] args)
{
ExecutorService exe = Executors.newFixedThreadPool(3);
for(int i=0;i<3;i++)
{
exe.execute(new Sleep());
}
exe.shutdown();
}
}