ivana_andreevska

Колоквиумска ОС1 (Threads)

Mar 20th, 2022
840
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.15 KB | None | 0 0
  1. Дадено е сценарио каде имаме класа SharedResource со еден атрибут (бројач) со иницијална вредност 0 и методи:
  2. -void increment() -> за згоелмување на бројачот за еден
  3. -int getCounter() -> за земање вредноста на бројачот
  4.  
  5. Соодветно имаме класи CustomThread (наследува од Thread) и CustomRunnable (го имплементира Runnable интерфејсот) кои содржат атрибут од типот SharedResource и метод void run();
  6.  
  7.  
  8. public class Zadaca1 {
  9.     public static void main(String[] args) {
  10.         SharedResource resource=new SharedResource();
  11.         Runnable t1=new CustomRunnable(resource);
  12.         Thread t2=new Thread(t1);
  13.         CustomThread t3=new CustomThread(resource);
  14.  
  15.         //start
  16.         t1.run(); //da se izvrsi
  17.         t2.start(); // da se startne vo nova paralelna niska
  18.         t3.start();
  19.  
  20.         resource.increment();
  21.         System.out.println(resource.counter);
  22.     }
  23. }
  24.  
  25. class SharedResource {
  26.     int counter;
  27.  
  28.     public SharedResource() {
  29.         this.counter = 0;
  30.     }
  31.  
  32.     public void increment() {
  33.         counter++;
  34.     }
  35. }
  36.  
  37. class CustomRunnable implements Runnable {
  38.     SharedResource sharedResource;
  39.  
  40.     public CustomRunnable(SharedResource sharedResource) {
  41.         this.sharedResource = sharedResource;
  42.     }
  43.  
  44.     @Override
  45.     public void run() {
  46.         for (int i = 0; i < 3; i++) {
  47.             this.sharedResource.increment();
  48.             System.out.print('R');
  49.         }
  50.     }
  51. }
  52.  
  53. class CustomThread extends Thread {
  54.     SharedResource sharedResource;
  55.     public CustomThread(SharedResource sharedResource)
  56.     {
  57.         this.sharedResource=sharedResource;
  58.     }
  59.     public void run()
  60.     {
  61.         for(int i=0;i<3;i++)
  62.         {
  63.             this.sharedResource.increment();
  64.             System.out.print('T');
  65.         }
  66.     }
  67. }
  68.  
  69.  
  70.  
  71.  
  72. Колку нитки беа активни(вклучувајќи го и main)?
  73. -3 нишки (t2,t3,main) runnable не е нишка
  74.  
  75. Што ќе биде испечатено?
  76. -Не може да предвидиме
  77.  
  78. Вредноста на finalCounter e?
  79. -Не може да предвидиме
  80.  
  81. Првите три исечатени букви секогаш ќе бидат RRR?
  82. -Да (t1.run го извржуваме во методот run и прави се што има во методот)
  83.   for (int i = 0; i < 3; i++) {
  84.             this.sharedResource.increment();
  85.             System.out.print('R');
  86.         }
  87.  
  88. Дали run на t2 секогаш ќе заврши пред run на t3?
  89. -Не (Schedueler одредува кој кога ќе заврши и тоа е случаен избор)
  90.  
  91. Дали main секогаш ќе заврши последен?
  92. -Не (Schedueler одредува кој кога ќе заврши и тоа е случаен избор)
  93.  
  94. Кога ќе заврши run на t1?
  95. -Пред сите останати нитки оти t1 не е нитка
  96.  
  97. Дали може да настане deadlock?
  98. -Не
Advertisement
Add Comment
Please, Sign In to add comment