Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java

ความแตกต่างระหว่าง scheduleThread pool และ Single Thread Executor


ซีเนียร์ เลขที่ คีย์ กลุ่มเธรดตามกำหนดการ ตัวดำเนินการเธรดเดียว
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");
   }
}