Advertisement
Kochabitacja

Lab8_kartkówka

Nov 24th, 2016
37
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.77 KB | None | 0 0
  1. 1. W jaki sposób można utworzyć nowy wątek w Javie?
  2.  
  3.                 public class Klasa implements Runnable{
  4.                     @Override
  5.                     public void run(){
  6.                         ...
  7.                     }
  8.                 }
  9.                
  10.                 public class Main{
  11.                     Thread wątek = new Thread(new Klasa());
  12.                     wątek.start();
  13.                 }
  14.  
  15.  
  16.  
  17. 2. Chcemy wykonać fragment logiki klasy w nowym wątku (jej metodę method()), jak należy zmienić kod tej klasy?
  18.  
  19.     class A {
  20.         public void method() {
  21.           //code
  22.         }
  23.     }
  24.    
  25.                 class A implements Runnable{
  26.                     public void method(){
  27.                         //code
  28.                     }
  29.                     @Override
  30.                     public void run(){
  31.                         method();  //or this.method(); ?
  32.                     }
  33.                 }
  34.  
  35.  
  36.  
  37. 3. W jaki sposób można uruchomić nowy wątek, mając do dyspozycji obiekt klasy implementującej interfejs Runnable?
  38.  
  39.                
  40.                     Thread wątek = new Thread(obiekt);
  41.                     wątek.start();
  42.  
  43.  
  44.  
  45. 4. W jakich okolicznościach wykonanie wątku może zostać zakończone?
  46.  
  47.                 Nowy wątek zakończy swoje działanie, gdy zostanie zakończona metoda run, co może nastąpić na trzy sposoby:
  48.  
  49.                     -osiągnięty zostanie koniec metody
  50.                     -wykonane zostanie return;
  51.                     -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).
  52.                    
  53.                     - gdy wymusimy jego zakończenie???
  54.  
  55.  
  56.  
  57. 5. W jaki sposób można zakończyć działanie innego wątku?
  58.  
  59.                 void interrupt()
  60.  
  61.                         Wymuszenie zakończenia wątku
  62.                         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ą
  63.  
  64.                         void interrupt()
  65.                         Natomiast wątek, który chcemy zakończyć musi co jakiś czas sprawdzać, czy nie został zakończony metodami
  66.  
  67.                         static boolean interrupted()
  68.                         lub
  69.  
  70.                         boolean isInterrupted()
  71.  
  72.  
  73.  
  74. 6. W jaki sposób można zapewnić, że metoda method danego obiektu będzie wykonywana tylko przez jeden wątek naraz?
  75.  
  76.                 synchronized
  77.                
  78.                         synchronized void method() throws InterruptedException {
  79.                             //code
  80.                         }
  81.  
  82.  
  83.  
  84. 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?
  85.  
  86.  
  87.  
  88. 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()?
  89.  
  90.  
  91.  
  92. 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