导航

修饰符(下)

Posted on 2017-08-09 23:40  Young哥哥  阅读(56)  评论(0)    收藏  举报

上次分享了可以访问和禁止访问修饰符。这次分享非访问类型的修饰符,请看下表格:

修饰符说明
static 用于创建类、方法和变量
final 用于最终确定类、变量和方法的实施方式
abstract 用于创建抽象方法和类
synchronized 用于多线程的同步机制对资源进行加锁,使得在同一个时间,只有一个线程可以进行操作
Volatile 一个变量声明为volatile,就意味着这个变量是随时会被其他线程修改的,因此不能将它cache在线程memory中。

 

这里利用了Integer类中变量和方法,而不是先实例化。这是因为那些特定的方法和变量都是静态的。

 

abstract修饰符则略有不同。你可以创建一个带方法的类,但它们基本只能定义。你不能对它们添加逻辑。

 

下面要讲讲synchronized和volatile修饰符。

运行上述代码将输出打印一个随机的顺序。可能是连续的,也可能不连续,取决于CPU。然而,如果我们使用synchronized修饰符

 

olatile变量是一种状态标志,所以运行上面的代码会打印线程数,并在它们之间交替。这是因为该标志被存储在主存储器中。如果我们去掉volatile关键字,该线程将只交替一次,因为只使用一个本地参考,两个线程基本上彼此隐身

 

运行结果,如果去掉volatile,程序运行一次就退出