Guarded Suspension模式思想就是:如果执行现在的处理会造成问题,那就让执行处理的线程进行等待
Guarded Suspension模式通过让线程等待来保护实例的安全性。就像你没穿衣服,让快递员在门口等你一会儿来保护你的隐私一样。
也就是说,该模式存在一个持有状态的对象,该对象只有在自身状态合适时,才会允许线程进行目标处理

在Single Threaded Execution模式中,只要有一个线程进入临界区,其他线程就无法进入,只能等待。而在Guarded Suspension模式中,线程是否等待取决于守护条件。后者是在前者基础上添加了附加条件而形成的。

Immutable不变模式就是指:确保实例的内部状态不会发生改变,这样在访问这些实例时就不需要增加耗时的互斥处理(如Single Threaded Execution模式中的对临界区进行互斥保护)。

String类就是一个Immutable类。因为String类中使用final关键字修饰字符串数组private final char value[];来保存字符串,并没有修改字符串内容的方法。所以,String的实例所表示的字符串的内容不会发生变化。

Single Threaded Execution模式,即"以一个线程执行"。
就像独木桥一样,同一时间内只允许一个人通过,该模式用于设置限制,以确保同一时间内只能让一个线程执行处理。

  • 其实主要思想也就是:

当我们修改多个线程共享的实例时,实例就会失去安全性。所以我们找出这个不安全的范围,将这个范围设置为临界区,并对临界区进行保护(使用synchronized),使其只允许一个线程同时执行