Java入门之特殊关键字

特殊关键字的使用

Native

native简介

java是一个跨平台的语言,java的下层就是操作系统,操作系统大多是使用C、C++等语言编写的,在java要实现一定高级语言功能时很大一部分调用了底层操作系统给java提供的API去实现一些高层机制,比如hashCode()和多线程机制中的底层实现实际上就是调用了操作系统底层用C去自己调C语言的函数库中实现的多线程机制的函数去实现的。想当于在java中用native声明的函数,其实java本身并不提供实现,而是通过javah去编译产生.h文件用C或者C++去提供真正的实现,这样java就实现了良好的跨平台性。相当于native声明的方法是来扩展java程序所能实现的功能。

实现机制

1.在java中声明native()方法,然后编译

2.用javah产生一个.h文件

3.用一个.cpp文件实现native导出的方法,其中需要包含第二步.h文件

4.将第三步的.cpp文件编译生成动态链接库文件

5.在java中用System.loadLibrary()方法加载第四步产生的动态链接库文件,这个native方法就可以在java程序中杯访问了。

volatile

volatile关键字

volatile关键字是在多线程并发中使用的,volatile关键字是控制多个线程在同时在主存的堆内存中去取数据时的实时更新,达到取变量时的同步。java为了解决多线程并发中的线程安全问题,在java中程序中提供了volatile关键字和synchronized关键字。

synchronized关键字

synchronized关键字时java中解决多线程并发问题的主要工具,synchronized相当于线程同步锁,用这个关键字修饰的代码块和函数相当于被上了一把锁,而哪个线程来使用这一段代码或者这个函数都必须先把钥匙拿上,在使用完了以后再把钥匙归还,这样就保证了在同一时刻同一空间内只能有一个线程操作这段代码块,实现了临界资源的互斥访问原理,这种思想类似于操作系统中解决同步与互斥的信号量机制的PV操作。但是这种机制本身由于实现了临界资源的互斥访问,这样一来如果是多线程并发的程序会大大减少了程序运行的效率。所以多线程并发虽然大大增加了程序的效率,但同时也带来了很大的安全隐患问题,所以程序的设计者就应该全面考虑程序的需求从而灵活的去设计。

volatile的机制

volatile关键字用来修饰变量的,多线程程序之所以执行的效率高是因为,多线程的程序利用现在机器的高性能在程序进行编译加载的时候就会把自己线程内部可能会使用到的变量的空间申请下来,利用栈内存进行存储变量的引用,在轮到线程执行时,线程会在主线程中的引用去堆内存中找到变量当时的值,把当时的值的副本放入线程自己的内存中进行执行运算,完毕后再放回主线程,volatile的作用就是保证了线程每次去主线程取值时能取到当前最新的、实时的值,所以volatie和syschronized应该是配合使用达到线程安全的效果。

猜你喜欢

转载自blog.csdn.net/qq_36755772/article/details/88954060