İki iş parçacığı tasarlıyorum: biri oyuncuların adını almalı ve ikinci iş parçacığı devam etmek için ayarlanan ismin beklemesini beklemek zorundadır, ancak ilk iş parçacığındaki tüm öğeyi() bildirmeniz gerekir. IllegalMonitorStateException hatasını atıyor.notifyAll() ekleri IllegalMonitorStateException
private NameFecth nameFetch;
private UseName useName;
private Object nameSetLock;
public static void method{
nameSetLock = new Object()
nameFetch = new NameFetch(nameSetLock);
useName = new UseName(nameSetLock);
Thread nameFetchThread = new Thread(nameFetch);
nameFetchThread.start();
Thread useNameThread = new Thread(useName);
useNameThread.start();
}
public class NameFetch implements Runnable{
/*variables and constructers*/
public void run(){
/*get name and set the variable somehow*/
synchronized(nameSetLock){
notifyAll();
}
}
}
public class UseName implements Runnable{
/*variables and constructers*/
public void run(){
while(!nameBeenSet){
synchronized(nameSetLock){
try{
wait();
}catch(InterruptedException e) {}
}
}
}
Neyi yanlış yaptım?
Bu tam bir koddur? – saurav