Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Дадено е сценарио каде имаме класа SharedResource со еден атрибут (бројач) со иницијална вредност 0 и методи:
- -void increment() -> за згоелмување на бројачот за еден
- -int getCounter() -> за земање вредноста на бројачот
- Соодветно имаме класи CustomThread (наследува од Thread) и CustomRunnable (го имплементира Runnable интерфејсот) кои содржат атрибут од типот SharedResource и метод void run();
- public class Zadaca1 {
- public static void main(String[] args) {
- SharedResource resource=new SharedResource();
- Runnable t1=new CustomRunnable(resource);
- Thread t2=new Thread(t1);
- CustomThread t3=new CustomThread(resource);
- //start
- t1.run(); //da se izvrsi
- t2.start(); // da se startne vo nova paralelna niska
- t3.start();
- resource.increment();
- System.out.println(resource.counter);
- }
- }
- class SharedResource {
- int counter;
- public SharedResource() {
- this.counter = 0;
- }
- public void increment() {
- counter++;
- }
- }
- class CustomRunnable implements Runnable {
- SharedResource sharedResource;
- public CustomRunnable(SharedResource sharedResource) {
- this.sharedResource = sharedResource;
- }
- @Override
- public void run() {
- for (int i = 0; i < 3; i++) {
- this.sharedResource.increment();
- System.out.print('R');
- }
- }
- }
- class CustomThread extends Thread {
- SharedResource sharedResource;
- public CustomThread(SharedResource sharedResource)
- {
- this.sharedResource=sharedResource;
- }
- public void run()
- {
- for(int i=0;i<3;i++)
- {
- this.sharedResource.increment();
- System.out.print('T');
- }
- }
- }
- Колку нитки беа активни(вклучувајќи го и main)?
- -3 нишки (t2,t3,main) runnable не е нишка
- Што ќе биде испечатено?
- -Не може да предвидиме
- Вредноста на finalCounter e?
- -Не може да предвидиме
- Првите три исечатени букви секогаш ќе бидат RRR?
- -Да (t1.run го извржуваме во методот run и прави се што има во методот)
- for (int i = 0; i < 3; i++) {
- this.sharedResource.increment();
- System.out.print('R');
- }
- Дали run на t2 секогаш ќе заврши пред run на t3?
- -Не (Schedueler одредува кој кога ќе заврши и тоа е случаен избор)
- Дали main секогаш ќе заврши последен?
- -Не (Schedueler одредува кој кога ќе заврши и тоа е случаен избор)
- Кога ќе заврши run на t1?
- -Пред сите останати нитки оти t1 не е нитка
- Дали може да настане deadlock?
- -Не
Advertisement
Add Comment
Please, Sign In to add comment