我需要做的是使用大小爲3的FixedThreadPool,然後用它來打印ThreadName,然後讓它在指定的時間間隔內隨機休眠一段時間,並打印它醒來當它完成時。我需要通過線程來完成,但是我的輸出將與所有3個線程一起完成。FixedThreadPool
希望的輸出: 池-1-線程1進入休眠狀態爲800毫秒和1000毫秒之間
時間間隔的隨機量池-1-線程1進行睡
池-1-線程2臨睡前爲800毫秒和1000毫秒
之間的時間間隔的隨機量池-1-線程2完成睡眠
池-1-線程3睡覺時間間隔的隨機量在800毫秒和1000毫秒之間
池1線程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();
}
}
當您需要它們以完全順序執行時,多線程的要點是什麼? –
如果你需要通過線程來完成它 - 你應該使用'newSingleThreadExecutor'來代替3線程池。 –
給我們提供了期望和實際產出的例子 –