多线程题目解答

本文通过一个具体的线程抽奖程序实例,详细展示了如何利用多线程实现抽奖过程,并记录了抽奖过程中每个线程的行为,有助于理解多线程编程中同步与并发的概念。

看到群里有人发出两个面试问题,写了下第7题的线程题目,得出了答案,把代码贴出来,以后自己常来看看,写写东西。话说这是我写的第一篇博客,有点O(∩_∩)O!



以下是第7题的答案


    private ActivityMyAppleForBinding binding;
    List<HashMap<String,String>>  list=new ArrayList<>();
    List<String> listkey=new ArrayList<>();
    Thread t1,t2;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
//        binding=DataBindingUtil.setContentView(this,R.layout.activity_my_apple_for);
//        recyclerview_item_apply_job

        HashMap<String,String> map1=new HashMap<>();
        map1.put("macBookPro","8988");
        list.add(map1);

        HashMap<String,String> map2=new HashMap<>();
        map2.put("三星note7","5675");
        list.add(map2);

        HashMap<String,String> map3=new HashMap<>();
        map3.put("小米4","2688");
        list.add(map3);

        HashMap<String,String> map4=new HashMap<>();
        map4.put("联想p612","866");
        list.add(map4);

        HashMap<String,String> map5=new HashMap<>();
        map5.put("iphone7","5688");
        list.add(map5);


        listkey.add("macBookPro");
        listkey.add("三星note7");
        listkey.add("小米4");
        listkey.add("联想p612");
        listkey.add("iphone7");

        TestTask testTask=new TestTask();
        t1=new Thread(testTask);
        t2=new Thread(testTask);
        t1.start();
        t2.start();


    }

    public class TestTask implements Runnable{
      //执行线程
        @Override
        public void run() {
            //抽取次数不做限制,直到奖品抽完为止
            while (listkey.size()>0){
                int size=listkey.size();
                //随机抽取出的奖品
                int number = new Random().nextInt(size);
                String key=listkey.get(number);
//                String value=list.get(number).get(key);
                listkey.remove(number);
//                list.remove(number);
                Log("+++++++"+Thread.currentThread().getName()+"------key--"+key);
                Log("----t1-----"+t1.getName());
                Log("----t2-----"+t2.getName());

//                02-07 10:49:57.978 27727-29735/org.unionapp.xfjyw E/LOG: +++++++Thread-4083------key--iphone7
//                02-07 10:49:57.979 27727-29735/org.unionapp.xfjyw E/LOG: ----t1-----Thread-4083
//                02-07 10:49:57.979 27727-29735/org.unionapp.xfjyw E/LOG: ----t2-----Thread-4084
//                02-07 10:49:57.979 27727-29735/org.unionapp.xfjyw E/LOG: +++++++Thread-4083------key--三星note7
//                02-07 10:49:57.979 27727-29735/org.unionapp.xfjyw E/LOG: ----t1-----Thread-4083
//                02-07 10:49:57.979 27727-29736/org.unionapp.xfjyw E/LOG: +++++++Thread-4084------key--macBookPro
//                02-07 10:49:57.979 27727-29736/org.unionapp.xfjyw E/LOG: ----t1-----Thread-4083
//                02-07 10:49:57.979 27727-29736/org.unionapp.xfjyw E/LOG: ----t2-----Thread-4084
//                02-07 10:49:57.979 27727-29736/org.unionapp.xfjyw E/LOG: +++++++Thread-4084------key--联想p612
//                02-07 10:49:57.979 27727-29736/org.unionapp.xfjyw E/LOG: ----t1-----Thread-4083
//                02-07 10:49:57.979 27727-29736/org.unionapp.xfjyw E/LOG: ----t2-----Thread-4084
//                02-07 10:49:57.980 27727-29735/org.unionapp.xfjyw E/LOG: ----t2-----Thread-4084
//                02-07 10:49:57.981 27727-29736/org.unionapp.xfjyw E/LOG: +++++++Thread-4084------key--小米4
//                02-07 10:49:57.981 27727-29736/org.unionapp.xfjyw E/LOG: ----t1-----Thread-4083
//                02-07 10:49:57.981 27727-29736/org.unionapp.xfjyw E/LOG: ----t2-----Thread-4084
            }
        }
    }

有点乱,可以多试几种方法去解答,再去多学习下线程的东西,来做总结。










内容概要:本文系统介绍了算术优化算法(AOA)的基本原理、核心思想及Python实现方法,并通过图像分割的实际案例展示了其应用价值。AOA是一种基于种群的元启发式算法,其核心思想来源于四则运算,利用乘除运算进行全局勘探,加减运算进行局部开发,通过数学优化器加速函数(MOA)和数学优化概率(MOP)动态控制搜索过程,在全局探索与局部开发之间实现平衡。文章详细解析了算法的初始化、勘探与开发阶段的更新策略,并提供了完整的Python代码实现,结合Rastrigin函数进行测试验证。进一步地,以Flask框架搭建前后端分离系统,将AOA应用于图像分割任务,展示了其在实际工程中的可行性与高效性。最后,通过收敛速度、寻优精度等指标评估算法性能,并提出自适应参数调整、模型优化和并行计算等改进策略。; 适合人群:具备一定Python编程基础和优化算法基础知识的高校学生、科研人员及工程技术人员,尤其适合从事人工智能、图像处理、智能优化等领域的从业者;; 使用场景及目标:①理解元启发式算法的设计思想与实现机制;②掌握AOA在函数优化、图像分割等实际问题中的建模与求解方法;③学习如何将优化算法集成到Web系统中实现工程化应用;④为算法性能评估与改进提供实践参考; 阅读建议:建议读者结合代码逐行调试,深入理解算法流程中MOA与MOP的作用机制,尝试在不同测试函数上运行算法以观察性能差异,并可进一步扩展图像分割模块,引入更复杂的预处理或后处理技术以提升分割效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值