BKB知识库

记录平时工作过程中的学习点滴

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),使其只允许一个线程同时执行

该案例主要为实现一个检查Java代码规范的编译器插件功能,编码规范遵循下面标准:

  • 类或接口:符合驼式命名法,首字母大写。
  • 方法:符合驼式命名法,首字母小写。
  • 字段:
    类或实例变量。符合驼式命名法,首字母小写。
    常量。要求全部由大写字母或下划线构成,并且第一个字符不能是下划线。

驼式命名法(Camel Case Name)是当前Java语言中主流的命名规范,我们的实战目标就是为Javac编译器添加一个额外的功能,在编译程序时检查程序名是否符合上述对类(或接口)、方法、字段的命名要求。