您的位置:首页 > 编程语言 > Java开发

jdk学习之路----System

2015-07-19 10:10 375 查看
1:System是final修饰的类,不能继承,可以调用

2:System类中有一个native修饰的方法,native修饰的方法代表该方法不在本地实现,而是用其他的语言编写了程序进行对操作系统操作,java语言是不能对操作系统进行操作的,所以可以用这种方式来用c语言进行编程,实现对操作系统的操作,然后再将其编译成动态库就行了。java是通过JNI来允许java使用其他语言编写的函数的(JNI是java native interface java本机接口)

JNI的书写步骤如下:

a.编写带有native声明的方法的Java类

b.使用javac命令编译编写的Java类

c.使用java -jni ****来生成后缀名为.h的头文件

d.使用其他语言(C、C++)实现本地方法

e.将本地方法编写的文件生成动态链接库

System类就是一个这样的例子

3:System类中定义了很多static的流对象:eg InputStream in ,PrintStream out ,PrintStream err

4:System 类中还有一个volative修饰的属性:

private static volatile SecurityManager security = null;

volatile

用volatile修饰的变量,线程在每次使用变量的时候,都会读取变量修改后的最的值。volatile很容易被误用,用来进行原子性操作。

用volatile修饰的变量只能保证每个线程从内存中获得的值一定是最新的,但仍然存在线程并发的问题,因为线程从内存中获得值之后,对该变量进行的操作都是在创建了一个这个变量的副本之后进行的也就是说是对变量副本进行操作的,然后再线程将要推出的时候,再把值写回内存中,但在操作的过程中其他线程也有可能对这个变量进行操作。因此存在线程并发问题。线程执行完之后自动将值写回内存就好像是多核中的用了lastprivage修饰的线程。线程初始化时用内存的对象创建了一个副本然后对副本进行操作就好像是多核中的用copyin修饰的线程,线程的这个对象就是线程的私有变量private
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: