Tråde og synkronesering
Hej jeg har lige et spørgsmål til jer. Jeg har to funktioner som begge benytter en fælles resourse og den ønsker jeg at beskytte så der ikke kan fåes adgang til den på samme tid. Hvor er det lige Wait og Notify skal placeres i de to funktioner. Der hvor jeg har placeret wait/notify opstår en deadlock. Så andre bud?Her den første funktion:
public ViewCommand ViewCommandObjS() throws RemoteException
{
ViewCommand viewcommand = new ViewCommand();
synchronized(obj2)
{
//if
try
{
obj2.wait();
}
catch(Exception ex)
{
System.out.println(ex);
}
}
/*Den kritiske region*/
Vector v = getAll();
ViewCommand k = new ViewCommand("2", "Sender3", "Sender2112", "Test");
int n = v.indexOf(k); // finder en bestem Usp_get_action object
System.out.println(n);
ViewCommand vcom = new ViewCommand();
vcom = viewcommand.getViewCommandObj(n,v);
/* Den kritiske region slut */
obj1.notify();
return vcom;
}
Her er den anden funktion:
public void run()
{
while(true)
{
synchronized(obj1)
{
try
{
if (available)
obj1.wait();
}
catch(Exception ex)
{
System.out.println(ex);
}
}
// Den kritiske region
empyVector();
All();
// kritiske region slut
obj2.notify();
try
{
Thread.sleep(5000);
}
catch (Exception ex)
{}
}
}
