Этой программа работает в бесконечный цикл:что проблема в этом многопоточном коде
public class NewClass {
static void execute(String[] tasks) {
PCTest test = new PCTest(tasks);
new Thread(test.producer, "Prod").start();
new Thread(test.consumer, "Con").start();
}
private static class PCTest {
private String currentTask;
final String[] producerTasks;
final Prod producer;
final Consmr consumer;
public PCTest(String[] producerTasks) {
this.producerTasks = producerTasks;
producer = new Prod();
consumer = new Consmr();
}
private class Prod implements Runnable {
Prod() {
}
public synchronized void run() {
int i = 0;
while (i < producerTasks.length) {
if (currentTask == null) {
currentTask = producerTasks[i++];
this.notify();
}
try {
this.wait();
} catch (InterruptedException e) {
//do Nothing
}
}
}
}
private class Consmr implements Runnable {
Consmr() {
}
public synchronized void run() {
int i = 0;
while (i < producerTasks.length) {
if (currentTask != null) {
System.out.print(currentTask);
i++;
if (i < producerTasks.length) {
System.out.print(",");
}
currentTask = null; //*
this.notify();
}
try {
this.wait();
} catch (InterruptedException e) {
//do Nothing
}
}
}
}
}
public static void main(String a[]){
String ar[]={"a","b","c"};
execute(ar);
}
}
Мы не знаем. В чем проблема? –
Возможно, отладка расскажет вам больше об этом! –
Вы должны предоставить более подробную информацию о том, что вы пытаетесь выполнить и что не работает должным образом. –