Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.ArrayList;
- import java.util.concurrent.CountDownLatch;
- public class SleepSort {
- private static volatile ArrayList<Integer> sorted = new ArrayList<Integer>();
- /**
- * @param args
- */
- public static void main(String[] args) {
- CountDownLatch latch = new CountDownLatch(args.length);
- for(String string : args){
- Integer num = Integer.parseInt(string);
- new AddToListRunnable(num, latch).start();
- }
- try {
- latch.await();
- System.out.println(sorted);
- }
- catch (InterruptedException e) {
- e.printStackTrace();
- }
- }
- private static class AddToListRunnable extends Thread {
- private final Integer number;
- private final CountDownLatch latch;
- public AddToListRunnable(Integer number, CountDownLatch latch){
- this.number = number;
- this.latch = latch;
- }
- @Override
- public void run() {
- try {
- sleep(number * 1000l);
- sorted.add(number);
- latch.countDown();
- System.out.println(latch.getCount());
- }
- catch (InterruptedException e) {
- e.printStackTrace();
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement