构造n个线程,它们和这n个数一一对应。初始化后,线程们开始睡眠,等到对应的数那么多个时间单位后各自醒来,然后输出它对应的数。这样最小的数对应的线程最早醒来,这个数最早被输出。等所有线程都醒来,排序结束。
public class SleepSort implements Runnable{
private int num;
public SleepSort(int num){
this.num = num;
}
@Override
public void run() {
try {
Thread.sleep(num);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(num);
}
public static void main(String[] args) {
int[] arr = new int[]{200, 350, 400, 450, 1000, 100, 800};
for(int i=0; i<arr.length; i++){
new Thread(new SleepSort(arr[i])).start();
}
}
}