我的预期输出是
Count : 1
Count : 2
Count : 3
Count : 4
Count : 5
我尝试过同步和锁定,但它们都不起作用。我到达
结束主要
在我完全完成循环之前。当前输出为:
Starting Main
Count : 1
Count : 2
Count : 3
Count : 4
Ending Main
Count : 5
知道为什么 Count : 5 在 Ending Main 之后吗?这是我的代码:
public class Demo {
public static void main( String [] args ) {
System.out.println( "Starting Main" ) ;
for ( int i = 1 ; i <= 5 ; i++ ) {
Thread numberThread = new Thread(new NumberTask(i)) ;
numberThread.start() ;
}
System.out.println( "Ending Main" ) ;
}
}
class NumberTask implements Runnable {
private Lock bankLock = new ReentrantLock();
int count ;
public NumberTask( int count ) {
this.count = count ;
}
synchronized public void run() {
bankLock.lock();
try {
System.out.println( "Count : " + count ) ;
} finally {
bankLock.unlock();
}
}
}