База ответов ИНТУИТ

Параллельные и распределенные вычисления

<<- Назад к вопросам

Приведена реализация схемы Producer-Consumer (язык Java).
class Q {    int n;    synchronized int get() {        return n;    }    synchronized void put() {        this.n = n;    }}class Producer implements Runnable {    Q q;    Producer(Q q) {        this.q = q;        new Thread(this, "Producer").start();    }    public void run() {        int i = 0;        while(true) {            q.put(i++);        }    }}class Consumer implements Runnable {    Q q;    Consumer(Q q) {        this.q = q;        new Thread(this, "Consumer").start();    }    public void run() {        while(true) {            q.get();        }    }}class PC {    public static void main() {        Q q = new Q();        new Producer(q);        new Consumer(q);    }}            
Какое утверждение справедливо для данной программы?

(Отметьте один правильный вариант ответа.)

Варианты ответа
программа является корректной, но результат её выполнения зависит от среды исполнения (Верный ответ)
данная программа не является корректной с точки зрения языка Java
данная программа корректна и характеризуется однозначным результатом выполнения
в данной программе не было реализовано ни одного пользовательского потока
Похожие вопросы
Приведена реализация схемы Producer-Consumer (язык Java).
class Q {    int n;    synchronized int get() {        return n;    }    synchronized void put() {        this.n = n;    }}class Producer {    Q q;    Producer(Q q) {        this.q = q;        new Thread(this, "Producer").start();    }    public void run() {        int i = 0;        while(true) {            q.put(i++);        }    }}class Consumer {    Q q;    Consumer(Q q) {        this.q = q;        new Thread(this, "Consumer").start();    }    public void run() {        while(true) {            q.get();        }    }}class PC {    public static void main() {        Q q = new Q();        new Producer(q);        new Consumer(q);    }}            
Какие утверждения справедливы для данной программы?
Приведена реализация очереди (язык Java). Методы doPut и doTake реализованы в классе BaseBoundedBuffer.
public class WaitNotifyQueue <T> extends BaseBoundedBuffer <T> {    public WaitNotifyQueue(int size) {        super(size);    }    public synchronized void put(T v) throws InterruptedException {        while (isFull()) {            wait ();        }        doPut(v);        notifyAll ();    }    public synchronized T take() throws InterruptedException {        while (isEmpty()) {            wait();        }        T v = doTake ();        notifyAll ();        return v;    }}            
Какие функции несет на себе метод wait в данной программе?
Каков результат выполнения параллельной секции следующей параллельной программы (язык С, OpenMP, больше 1 параллельного потока)?
#include >omp.h<#include >stdio.h<int main(int argc, char **argv) {    #pragma omp parallel    printf("Hi!\n");    printf("Bye!\n");    return 0;}
Метод join (язык Java)
Метод sleep (язык Java)
Метод isAlive (язык Java)
Для чего предназначен метод notify (язык Java)?
Для чего предназначен метод notifyAll (язык Java)?
В чем особенность примитива Condition для условной синхронизации (язык Java)?
Метод run (язык Java)