我需要做的是使用大小为 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();
}
}