Scrivo una semplice app Java che prevede di essere eseguita una volta alla settimana. L'ho progettato come segue:
QueueA<>
QueueB<>
Thread1 :
some class
QueueA.add()
Thread2:
Check QueueA every 10 second
then, QueueA.poll(), and do sth
QueueB.add()
Thread3:
Check QueueB every 10 second
then, QueueB.poll() and do sth
- Il thread 1 aggiungerà valore a QueueA, forse è necessario eseguire 10-100 volte; la funzione in questo thread sarà O (n) tempo. n può essere grande come 10k.
- Thread 2 si occuperà di QueueA e aggiungerà valore a QueueB, eseguirà la dimensione di QueueA volte. la complessità temporale della funzione in questa classe dovrebbe essere O (n ^ 2). e n ^ 2 può essere grande come 1 milione.
- Thread 3 esegue i tempi di QueueB.size ().
La mia domanda è:
- Penso doppio al mio design. È necessario utilizzare più thread qui? Potrebbe risparmiare un po 'di tempo, ma non molto. È una buona pratica qui? o lineare è sufficiente?
- Per l'automazione, in primo luogo penso di utilizzare altri strumenti, come Rundeck. Quindi, penso che Java stesso abbia una funzione di pianificazione. È una buona scelta usare la funzione di pianificazione di Java?