package javacountdownlatch;
import java.util.concurrent.CountDownLatch;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
*
* @web http://java-buddy.blogspot.com/
*/
public class JavaCountDownLatch {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
System.out.println("Start counting");
CountDownLatch countDownLatch1 = new CountDownLatch(5);
CountThread countThread1 = new CountThread("A", countDownLatch1, 5);
CountDownLatch countDownLatch2 = new CountDownLatch(7);
CountThread countThread2 = new CountThread("B", countDownLatch2, 7);
try {
countDownLatch1.await();
System.out.println("A finished");
countDownLatch2.await();
System.out.println("B finished");
} catch (InterruptedException ex) {
Logger.getLogger(JavaCountDownLatch.class.getName()).log(Level.SEVERE, null, ex);
System.out.println(ex.toString());
}
}
}
class CountThread implements Runnable {
int num_of_count = 5;
CountDownLatch counter;
String name;
CountThread(String n, CountDownLatch c, int num) {
name = n;
counter = c;
num_of_count = num;
new Thread(this).start();
}
@Override
public void run() {
for (int i = 0; i < num_of_count; i++) {
try {
Thread.sleep(1000);
} catch (InterruptedException ex) {
Logger.getLogger(CountThread.class.getName()).log(Level.SEVERE, null, ex);
}
System.out.println(name + " : " + counter.getCount());
counter.countDown();
}
}
}
- Read JavaFX version, Bind JavaFX ProgressBar.progressProperty() to DoubleProperty in Thread.
No comments:
Post a Comment