多线程的设计模式

    xiaoxiao2021-03-25  110

    多线程的设计模式之Future


    Future模式有点类似于商品订单。比如在网购时,当看中某一件商品时,就可以提交订单,当订单处理完成后,在家里等待送货上门即可。也就是我们发送Ajax请求的时候,页面是异步进行后台处理然后用户无需一直等待请求的结果,可以继续浏览或操作其他内容。先给用户返回的是一个假的对象,这里面的内容都是写死的,然后等算出真实数据之后,再返回一个真实的数据,这后面使用的是wait()和notify的方式做的一个延迟处理,流程是这么说,不过实现起来有点复杂的喔哈哈哈。

    多线程的设计模式之Master—Worker


    这个设计模式主要流程是,客户端发送请求到Master端,假如说是一百个任务,然后Master就将这一百个任务分配给一些Worker去做,然后又Master做归纳和总结,然后将数据再发回给客户。

    1. 在Master端里面有下面几个容器来存储不同的东西

    concurrentLinkedQueue来承放Task队列的。

    HashMap《String , Thread》是用来装Worker需要的线程的。 (不知道为啥用尖括号后面的字就没了)

    ConcurrentHashMap是用来承放每一个worker执行的结果的。

    2. worker端应该包含的几样东西

    worker里面应该有Masker的concurrentLinkedQueue对象的引用worker必须实现Runnable接口worker里又应该有Master的concurrentHashMap的引用。

    附:判断线程是否执行完毕的方法可以是

    线程名字.getValue().getState()!=Thread. State.TERMINATED()指定的Worker是由服务器的配置决定的,可以用Runtime.getRuntime().availableProcessors()来获取可以设置的worker数量。
    转载请注明原文地址: https://ju.6miu.com/read-9668.html

    最新回复(0)