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

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

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

Приведена реализация схемы 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
данная программа не является корректной с точки зрения языка Java (Верный ответ)
в данной программе не было реализовано ни одного пользовательского потока (Верный ответ)
Похожие вопросы
Приведена реализация схемы 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). Методы 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;}
Метод sleep (язык Java)
Метод isAlive (язык Java)
Метод join (язык Java)
Для чего предназначен метод notify (язык Java)?
Для чего предназначен метод notifyAll (язык Java)?
В чем особенность примитива Condition для условной синхронизации (язык Java)?
Метод run (язык Java)