2010-09-26 11 views

Odpowiedz

9

Miałem ten problem, więc pomyślałem, że spojrzę na kod źródłowy. Zakładając, że używasz standardowej konfiguracji kwarcu (przechowywanie zadań i wyzwalaczy w pamięci RAM zamiast trwałego JobStore), wydaje się, że kwarc jest bezpieczny dla wątków.

Kopiowanie do źródła, w końcu dostaniesz się do RamJobStore, który przechowuje wszystkie zadania i wyzwalacze w pamięci.

public void storeJobAndTrigger(SchedulingContext ctxt, JobDetail newJob, 
     Trigger newTrigger) throws JobPersistenceException { 
    storeJob(ctxt, newJob, false); 
    storeTrigger(ctxt, newTrigger, false); 
} 

W każdym z storeJob (..) i storeTrigger (..) metod, istnieją oddzielne zsynchronizowane bloki z własnych unikatowych obiektów do przechowywania pracy i wyzwala w wątku bezpieczny sposób:

synchronized (jobLock) { 
     if (!repl) { 
      // get job group 
      ... 
     } 
    } 

i synchronizacji wyzwalacz:

synchronized (triggerLock) { 
     ... 

     synchronized (pausedTriggerGroups) { 
      ... 
     } 
    } 

Więc krótko mówiąc, wydaje się, że można dokonać bezpiecznych połączeń gwintowanych do instancji klasy Scheduler

Powiązane problemy