花样作死学习笔记:多线程:多线程同时执行同一个程序

本文记录了一次有趣的编程实践,作者在尝试使用多线程解决一道题目时,体验到了非同步执行带来的意料之外的效果。原本期望通过多线程提升效率,但实际上运行时间从4增加到了57。尽管最终结果正确,但线程安全问题导致输出重复,作者对此进行了反思,并提出使用同步机制将恢复到单线程行为。
摘要由CSDN通过智能技术生成

人就是控制不住自己作死的心理。例如我
学习到了多线程知道了,多线程是提高运行效率最好的办法,当然还有算法。但是我还不会算法,所以用多线程做做死
正好老师出了一道题,在1-4这个4个数字中,生成十个三位数的数字,要求每一个数字都要不相同。同时这十个数字要求不相同。正常逻辑下,运行时间为4,代码应该如下

 long start = System.currentTimeMillis();
        LinkedList<Integer> list = new LinkedList<>();
        Collections.addAll(list,1,2,3,4);
        TreeSet<Integer> set = new TreeSet<Integer>();
        while (set.size()<10){
            Collections.shuffle(list);
            int i = list.get(0) * 100 + list.get(1)*10 + list.get(2);
            if (!set.contains(i)){
                set.add(i);
            }
        }
        System.out.println(set);
        long end = System.currentTimeMillis();
        System.out.println(end-start);

但是我就爱不走平常路,在改了n久之后出来一个好玩的。运行时间为57差距不止一点。代码如下

  long start = System.currentTimeMillis();
    Random random
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值