1、volatile
用volatile修饰的成员变量称为易失变量,通常这个变量同时被几个线程控制和修改,也就是说,这个成员变量不仅被当前程序所掌握,在运行过程中可能存在其他未知的程序操作来影响和改变该变量的取值。通常volatile用来修饰接收外部输入的变量。如表示当前的时间变量,由系统后台线程随时修改,以确保程序中总能取到最新的系统时间,可以把它定义为易失变量。
2、native
用native修饰的是一种特殊的方法,一般用来声明用其他语言编写的方法体并具体实现方法功能。由于native的方法使用其他语言在外部编写,因此native方法没有方法体,而使用一个“;”代替。在Java语言中采用其他语言编写的模块作为类方法可以充分利用已有的程序功能模块,避免重复工作和提高程序的安全性、准确性。要注意的是,native方法模块中是以非字节码形式嵌入到Java程序之中,而这种二进制代码只能运行在编译生成它的平台上,所以Java的跨平台将受到破坏,除非native引入代码也具有跨平台性,因此使用这类方法要小心。
3、synchronized
如果使用synchronized修饰一个类方法,那么在调用执行前,将把系统类中对应的当前类对象加锁。如果用synchronized修饰一个对象方法,那么在调用执行前,将把当前对象加锁。
synchronized主要用于多线程共存的程序中线程的协调与同步。
(来自《Java程序设计实用教程》)