上次分享了可以访问和禁止访问修饰符。这次分享非访问类型的修饰符,请看下表格:
| 修饰符 | 说明 |
|---|---|
| static | 用于创建类、方法和变量 |
| final | 用于最终确定类、变量和方法的实施方式 |
| abstract | 用于创建抽象方法和类 |
| synchronized | 用于多线程的同步机制对资源进行加锁,使得在同一个时间,只有一个线程可以进行操作 |
| Volatile | 一个变量声明为volatile,就意味着这个变量是随时会被其他线程修改的,因此不能将它cache在线程memory中。 |
这里利用了Integer类中变量和方法,而不是先实例化。这是因为那些特定的方法和变量都是静态的。
abstract修饰符则略有不同。你可以创建一个带方法的类,但它们基本只能定义。你不能对它们添加逻辑。
下面要讲讲synchronized和volatile修饰符。
运行上述代码将输出打印一个随机的顺序。可能是连续的,也可能不连续,取决于CPU。然而,如果我们使用synchronized修饰符
olatile变量是一种状态标志,所以运行上面的代码会打印线程数,并在它们之间交替。这是因为该标志被存储在主存储器中。如果我们去掉volatile关键字,该线程将只交替一次,因为只使用一个本地参考,两个线程基本上彼此隐身
运行结果,如果去掉volatile,程序运行一次就退出
浙公网安备 33010602011771号