Hallo Micha!
Zu 1: (die sleep 20000 sind nur da, um einen lange andauernden Vorgang zu simulieren)
Der Vorteil ist, dass du ja theoretisch mehrere solche Threads haben könntest und diese dann parallel ihre Arbeit erledigen können.
Z.B.: Parallel zueinander eine grosse Datei über Modem empfangen und von der Tastatur weiterhin Programmeingaben annehmen (die ja nicht zu definierten Zeitpunkten kommen) und zugleich noch was anderes tun...
zu 2:
Also, ich kann dir zwar nicht die genaue Java Syntax sagen, aber im allgemeinen Fall (mit lange dauernden Operationen) könnten z.B. Semaphoren als Flags verwendet werden:
main process -> create semaphore
main_process -> start thread;
main_process (sleep a little, to allow thread to get semaphore)
thread (open & get semaphore)
main_process (sem_wait) thread (do timeintense operations)
thread (set result)
thread (sem_post)
main_process (get result)
main_process (destroy_semaphore)
oder man verwendet signals:
main_process (contains signal handler for e.g. SIG_USR1)
main_process -> start thread;
main_process (sleep); thread (do timeintense operations)
thread (set result)
thread (SIG_USR1)
main_process (awake form sleep due to signal)
main_process (get result)
Grüsse,
Richard