Я хотел бы завершить некоторые многопоточности в кварцевом планировщике - PullRequest
0 голосов
/ 25 июня 2019

Я использую кварцевый планировщик в Java.

Я хочу создать многопоточную среду, в которой одновременно работают несколько планировщиков.

Динамически поток должен быть добавлен или удален. (без перезапуска приложения)

==================================================================== Main.java

Scheduler schduler = new StdSchedulerFactory().getScheduler();

    List<SimpleTriggerImpl> triggerList = new ArrayList<SimpleTriggerImpl>();

    List<JobDetail> jobDetailList = new ArrayList<JobDetail>();

    jobDetailList.add(JobBuilder.newJob(JobTest1.class).build());
    jobDetailList.add(JobBuilder.newJob(JobTest2.class).build());

    for (int i = 0; i < 2; i++) {
        triggerList.add((SimpleTriggerImpl) TriggerBuilder.newTrigger()
                .withIdentity(String.valueOf(i), Scheduler.DEFAULT_GROUP).startNow()
                .withSchedule(SimpleScheduleBuilder.simpleSchedule()
                        .withMisfireHandlingInstructionNowWithExistingCount().withIntervalInMilliseconds(10000) 
                        .withRepeatCount(SimpleTriggerImpl.REPEAT_INDEFINITELY))
                .build());
    }

    schduler.scheduleJob(jobDetailList.get(0), triggerList.get(0));
    schduler.scheduleJob(jobDetailList.get(1), triggerList.get(1));
    schduler.start();

JobTest1.java

public class JobTest1 implements Job{

public void execute(JobExecutionContext context) throws JobExecutionException {
    for(int i = 0; i<10;i++) {
        System.out.println("this is JobTest1");
        try {
            Thread.sleep(200);
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}

JabTest2.java

public class JobTest2 implements Job{

public void execute(JobExecutionContext context) throws JobExecutionException {

    for(int i = 0; i<10;i++) {

        System.out.println("this is JobTest2");
        try {
            Thread.sleep(200);
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

}

вопрос

  1. Как завершить некоторые определенные потоки в многопоточной среде

  2. Как проверить текущий интервал потоков в методе execute (), который реализует задание

  3. Как добавить новый поток в метод execute (), который реализует задание

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...