Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 1. W jaki sposób można utworzyć nowy wątek w Javie?
- public class Klasa implements Runnable{
- @Override
- public void run(){
- ...
- }
- }
- public class Main{
- Thread wątek = new Thread(new Klasa());
- wątek.start();
- }
- 2. Chcemy wykonać fragment logiki klasy w nowym wątku (jej metodę method()), jak należy zmienić kod tej klasy?
- class A {
- public void method() {
- //code
- }
- }
- class A implements Runnable{
- public void method(){
- //code
- }
- @Override
- public void run(){
- method(); //or this.method(); ?
- }
- }
- 3. W jaki sposób można uruchomić nowy wątek, mając do dyspozycji obiekt klasy implementującej interfejs Runnable?
- Thread wątek = new Thread(obiekt);
- wątek.start();
- 4. W jakich okolicznościach wykonanie wątku może zostać zakończone?
- Nowy wątek zakończy swoje działanie, gdy zostanie zakończona metoda run, co może nastąpić na trzy sposoby:
- -osiągnięty zostanie koniec metody
- -wykonane zostanie return;
- -zostanie wyrzucony wyjątek niekontrolowany (kontrolowany wyjątek musi zostać przetworzony wewnątrz metody run, ponieważ ta nie dopuszcza możliwości wyrzucenia jakiegokolwiek wyjątku kontrolowanego).
- - gdy wymusimy jego zakończenie???
- 5. W jaki sposób można zakończyć działanie innego wątku?
- void interrupt()
- Wymuszenie zakończenia wątku
- Czasami zachodzi potrzeba przerwania pracy innego wątku, np. jego obliczenia zostały anulowane przez użytkownika lub trwają za długo i nie są nam już potrzebne. Zakończenie wątku należy wykonać we współpracy z zakańczanym wątkiem. Główny wątek sygnalizuje potrzebę zakończenia metodą
- void interrupt()
- Natomiast wątek, który chcemy zakończyć musi co jakiś czas sprawdzać, czy nie został zakończony metodami
- static boolean interrupted()
- lub
- boolean isInterrupted()
- 6. W jaki sposób można zapewnić, że metoda method danego obiektu będzie wykonywana tylko przez jeden wątek naraz?
- synchronized
- synchronized void method() throws InterruptedException {
- //code
- }
- 7. W jaki sposób można zapewnić, że dostęp do obiektu o referencji criticalObject będzie miał w danym momencie tylko jeden wątek naraz?
- 8. Załóżmy, że mamy obiekt typu TrafficLights i wątek Car, który chciałby zaczekać na zmianę światła na zielone, jak musi wyglądać kod w jego metodzie run()?
- 9. Sytuacja jak wyżej, jak powinna wyglądać metoda switchLight wywoływana przez obiekt TrafficLights w metodzie run, by przy zmianie koloru wszystkie czekające samochody zostały o tym powiadomione?
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement