ซีเนียร์ เลขที่ | คีย์ | กลุ่มเธรดตามกำหนดการ | ตัวดำเนินการเธรดเดียว |
1 | พื้นฐาน | สร้างเธรดพูลที่สามารถกำหนดเวลาคำสั่งให้ทำงานหลังจากหน่วงเวลาที่กำหนด หรือดำเนินการเป็นระยะ | งานรับประกันว่าจะดำเนินการตามลำดับและจะไม่มีการใช้งานมากกว่าหนึ่งงานในเวลาใดก็ตาม |
2 | คิว | ใช้ Delay Queue เพื่อจัดเก็บงาน กำหนดเวลางานตามเวลาที่ล่าช้า | มันใช้การปิดกั้นคิว |
3 | อายุเธรด | จำนวนเธรดที่จะเก็บไว้ในพูลแม้ว่าจะไม่ได้ใช้งานก็ตาม | สร้างเธรดใหม่หากถูกฆ่าเนื่องจากงาน |
4. | ขนาดพูลเธรด | มีเธรดเดียวทำงานอยู่เสมอ | เธรดพูลสามารถขยายจากศูนย์เธรดเป็น Integer.MAX_VALUE |
5. | ใช้ตัวพิมพ์ | เราควรใช้ fixedthreadpool เมื่อเราต้องการจำกัดงานที่เกิดขึ้นพร้อมกัน | พูลประเภทนี้สามารถใช้ได้เมื่อคุณต้องการให้แน่ใจว่า Task1 ควรรันก่อน task2 เสมอ |
ตัวอย่าง ScheduledThreadPool
public class ScheduledThreadPoolExample {
public static void main(String args[]) {
ScheduledExecutorService services = Executors.newScheduledThreadPool(10);
services.schedule(new Task(), 10, TimeUnit.SECONDS);
services.scheduleAtFixedRate(new Task(), 15, 10, TimeUnit.SECONDS);
//(new Thread(new Main())).start();
}
}
public class Task implements Runnable {
@Override
public void run() {
System.out.println("In Run");
}
}
ตัวอย่าง SingleThreadExecutor
public class Main {
public static void main(String args[]) {
ExecutorService services = Executors.newSingleThreadExecutor();
Future<?> future = services.submit(new Task());
}
}
public class Task implements Runnable {
@Override
public void run() {
System.out.println("In Run");
}
}