zoukankan      html  css  js  c++  java
  • 多线程模式

    多线程模式

    • (一)Single Threaded Execution 是指“以1个线程执行”的意思,有时也称为Critical Section(临界区)。

    • (二)Immutable 是“永恒的”“不会改变”的意思。在Immutable Patttern中,有着能够保证实例状态绝不会改变的类(immutable 类)。因为访问这个实例时,可以省去使用共享互斥机制所会浪费的时间,提高系统性能。java.lang.String就是一个Immutable的类。

    • (三)guarded 是“被保护着的”、“被防卫着的”意思,suspension则是“暂停”的意思。当现在并不适合马上执行某个操作时,就要求想要执行该操作的线程等待,这就是Guarded Suspension Pattern。
      Guarded Suspension Pattern 会要求线程等候,以保障实例的安全性,其它类似的称呼还有guarded wait、spin lock等。

    • (四)Balking是“退缩不前”的意思。Balking Pattern和Guarded Suspension Pattern 一样需要警戒条件。在Balking Pattern中,当警戒条件不成立时,会马上中断,而Guarded Suspension Pattern 则是等待到可以执行时再去执行。

    • (五)Producer-Consumer Pattern 就是生产者-消费者模式。
      生产者和消费者在为不同的处理线程,生产者必须将数据安全地交给消费者,消费者进行消费时,如果生产者还没有建立数据,则消费者需要等待。
      一般来说,可能存在多个生产者和消费者,不过也有可能生产者和消费者都只有一个,当双方都只有一个时,我们也称之为Pipe Pattern

    • (六)Read-Write Lock Pattern 将读取与写入分开处理,在读取数据之前必须获取用来读取的锁定,而写入的时候必须获取用来写入的锁定。因为读取时实例的状态不会改变,所以多个线程可以同时读取;但是,写入会改变实例的状态,所以当有一个线程写入的时候,其它线程既不能读取与不能写入。

    • (七)Thread-Per-Message 模式是指每个message一个线程,message可以理解成“消息”、“命令”或者“请求”。每一个message都会分配一个线程,由这个线程执行工作,使用Thread-Per-Message Pattern时,“委托消息的一端”与“执行消息的一端”回会是不同的线程。

    • (八)Work Thread 模式和Thread-Per-Message模式类似,Thread-Per-Message每次都创建一个新的线程处理请求,而Work Thread模式预先会创建一个线程池(Thread Pool),每次从线程池中取出线程处理请求。

    • (九)Future 模式用来获取线程的执行结果。在Thread-Per-Message模式中,如果调用一个线程异步执行任务,没有办法获取到返回值,就像:
      host.request(10,'A');
      而Future模式送出请求后,马上就要获取返回值,就像:
      Data data=host.request(10,'A');
      但是上述的返回值并不是程序的执行结果,因为线程是异步的,主线程调用该该方法时,异步线程可能才刚刚启动。需要一段时间后像下面这样获取执行结果:
      data.getContent();

    • (十)Thread-Specific Storage(ThreadLocal) 就是“线程独有的存储库”,该模式会对每个线程提供独有的内存空间。
      java.lang.ThreadLocal类提供了该模式的实现,ThreadLocal的实例是一种集合(collection)架构,该实例管理了很多对象,可以想象成一个保管有大量保险箱的房间。

      java.lang.ThreadLocal类的方法:

      • public void set()

      该方法会检查当前调用线程,默认以该线程的Thread.currentThread()值作为键,来保存指定的值。

      • public Object get()

      该方法会检查当前调用线程,默认以该线程的Thread.currentThread()值作为键,获取保存指定的值。


  • 相关阅读:
    How To Mine Bitcoins 比特币挖矿
    Fear No More歌词
    我曾七次鄙视自己的灵魂
    固态硬盘降价,如何选择
    618好物推荐,路由器,手机电脑
    人机验证
    $this->request->post 和input 区别
    APP_DEBUG改成false上线之后发现:“页面错误!请稍后再试~
    Hide()方法不生效
    会声会影x7 每次安装均会提示:已安装这个产品的另一个版本
  • 原文地址:https://www.cnblogs.com/siten0616/p/14134343.html
Copyright © 2011-2022 走看看