zoukankan      html  css  js  c++  java
  • 睡觉排序

    package com.huat.pojo;
    
    public class Test implements Runnable {
    
        private String num;
    
        public Test(int num) {
            this.num = num + "";
        }
    
        @Override
        public void run() {
            try {
                Thread.sleep(Integer.valueOf(num));
                System.out.println(num);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    
        public static void main(String[] args) {
            int[] arr = {80, 3, 998, 8080, 1, 152, 1024};
            for (int i = 0; i < arr.length; i++) {
                new Thread(new Test(arr[i])).start();
            }
        }
    }

    咱们先来分析一下,构造n个线程,它们和这n个数一一对应。初始化后,线程们开始睡眠,等到对应的数那么多个时间单位后各自醒来,然后输出它对应的数。这样最小的数对应的线程最早醒来,这个数最早被输出。等所有线程都醒来,排序就结束了。能脑洞大开想出此算法的,也是大写的服气。说实话,看了这样的代码,我一下变得精神起来了,本来还是有点犯困,真是思绪万千,有好多话忍不住要说,首先,这个代码从纯技术角度来说,写的没毛病,语法什么的也都是对的,还用到了多线程等高难度的动作,但是看了这样的架势却是为了一个排序就让人大跌眼镜。

  • 相关阅读:
    Hbase表的管理
    Hbase指定规则扫描表
    vim配置
    caogao
    go on shell
    实习总结
    shell 脚本
    hadoop实战
    awk使用
    java reflect
  • 原文地址:https://www.cnblogs.com/daijiabao/p/11608403.html
Copyright © 2011-2022 走看看