多线程的设计模式

来源:互联网 发布:hbuilder mui商城源码 编辑:程序博客网 时间:2024/06/02 15:18

多线程的设计模式之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的引用。

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

  1. 线程名字.getValue().getState()!=Thread. State.TERMINATED()
  2. 指定的Worker是由服务器的配置决定的,可以用Runtime.getRuntime().availableProcessors()来获取可以设置的worker数量。
0 0
原创粉丝点击