finished() :
synchronized. . , , - , , , , finished().
else:
else {
System.out.printf("%9.2f ",sum);
index++;
try { lock.unlock(); }
catch (java.lang.IllegalMonitorStateException e) {};
try { lock.unlock(); }
catch (java.lang.IllegalMonitorStateException e) {};
}
cond.signalAll(), , index=0 , .
- ,
if(index != x) {.. cond.signalAll() lock.unlock() :
lock.unlock();
cond.signalAll();
Condition signalAll() :
( ) , , . , , . , , IllegalMonitorStateException.
, IllegalMonitorStateException.
:
public void finished(int x, double sum) throws InterruptedException {
try {
lock.lock();
while (index != x) {
cond.await();
}
System.out.printf("%9.2f ", sum);
index++;
cond.signalAll();
} finally {
lock.unlock();
}
if (index % 5 == 0) System.out.println();
}
, , OP, , - MatrixMultiTest:
try {
myThr.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
, , - finished() , i*5+j , index: 0, 1, 2 .. , index x, else finished(), . cond.await() .
join , , .