Magazine- multithread

0

Hej!
Mam problem z użyciem Listy w testach do zadania związanego z wielowątkowością.(docelowo w kodzie powinno być uzyte:BlockingQueue jednak w testach wymagana jest Lista).W jaki sposób rozwiązać ten problem?(Czy uzycie private static final AtomicInteger będzie rozwiązaniem?)

To kod:

  public class Producer extends ThreadProducer  implements Runnable {

private final BlockingQueue<Object> magazine;


Producer(BlockingQueue<Object> magazine) {
    this.magazine = magazine;
}

public void run() {
    try {
            Object produce = getResource();
            magazine.put(produce);
            System.out.println("Resource(produced) of magazine is: " + magazine.size());
    } catch (InterruptedException ex) {
        ex.printStackTrace();
    }
}

Object getResource() {
    try {
        Thread.sleep(1000);
    } catch (InterruptedException ex) {
        ex.printStackTrace();
    }
    return new Object();
}

.......................

        public class Consumer extends ThreadProducer implements Runnable {

private final BlockingQueue<Object> magazine;

Consumer(BlockingQueue<Object> magazine) {
    this.magazine = magazine;
}

public void run() {
    try {
        Object eats = magazine.take();
        System.out.println("Resource(consumed) of magazine is:" + magazine.size());
        take(eats);
    } catch (InterruptedException ex) {
        ex.printStackTrace();
    }
}

void take(Object obj) {
    try {
        Thread.sleep(100);
    } catch (InterruptedException ex) {
        ex.printStackTrace();
    }

................................Testy.................

 public class StockStatus {

public static void main(String[] args) {
    ExecutorService executor = Executors.newFixedThreadPool(5);
    Thread consume = new Thread(new Consumer(magazine));
    Thread produce = new Thread(new Producer(magazine));
    executor.execute(consume);
    executor.execute(produce);
    executor.shutdown();
}

}

2

Ale jaki masz problem? Z czym? I jaki test chcesz napisać? Co chcesz przetestować?

0

Sparametryzowany test przyjmujący jako parametr Lista i tworzenie ThreadPool.(Gdy producent czeka w kolejce bo jest za dużo produktów,
gdy konsument czeka,bo w kolejce jest za mało rzeczy.)

0

Nie widze tu żadnego testu, tylko jakiś randomowy main. Napisz może kod z którym masz problem, bo ja nadal nie rozumiem w czym rzecz.

0

W klasie main próbowałam zrobić zarys testu.Chodzi o stworzenie paru scenariuszy, które przetestują kolekcję. Sparametryzowany test przyjmujący jako parametr Listę i tworzenie ThreadPool, rozpoczynający wątki. (Jak wykonac sparametryzowany test przy użyciu ThreadPool)

1 użytkowników online, w tym zalogowanych: 0, gości: 1