java中final域的内存语义理解
说明1、对于final域的内存语义,编译器和处理器要遵守两个重排序规则(内部实现也是使用内存屏障):2、写final域的重排序规则:在构造函数内对一个final域的写入,与随后把这个被构造对象的引用赋值给一个引用变量,这两个操作之间不能重排序。读final域的重排序规则:初次读一个包含final域的对...
2024-01-10java内存间交互规则
1、关于主内存与工作内存之间的交互协议,即一个变量如何从主内存拷贝到工作内存,如何从工作内存同步到主内存中的实现细节。2、Java内存模型定义了8种原子操作。lock: 将一个变量标识为被一个线程独占状态unclock: 将一个变量从独占状态释放出来,释放后的变量才可以被其他线程锁定read: 将一个...
2024-01-10java继承中有哪些注意点
注意点1、Java之中只允许多层继承,不允许多重继承,Java存在单继承局限。2、在Java中,所有的类,都默认直接或者间接继承Object类。3、子类继承了父类,就会拥有父类的全部属性和方法!但是需要注意的是,对于所有的(4)非私有(no private)操作属于显式继承(可以直接利用对象操作),而所有的...
2024-01-10java调用shell脚本的方法
1、通过ProcessBuilder进行调度,这种方法比较直观,而且参数的设置也比较方便。ProcessBuilder pb = new ProcessBuilder("./" + RUNNING_SHELL_FILE, param1, param2, param3); pb.directory(new File(SHELL_FILE_DIR)); int runningStatus = ...
2024-01-10javaRabbitMQ消息队列是什么
1、RabbitMQ是用Erlang实现的一个高并发高可靠AMQP消息队列服务器。2、使用场景为提高系统响应速度、系统稳定性、服务调用异步化等。提高系统响应速度任务异步处理。将不需要同步处理的并且耗时长的操作由消息队列通知消息接收方进行异步处理。提高了应用程序的响应时间。提高系统稳定性系统挂...
2024-01-10java中RMI的原理分析
说明1、Client 端有一个被称 Stub 的东西,有时也会被成为存根,它是 RMI Client 的代理对象。2、Stub 的主要功能是请求远程方法时构造一个信息块,RMI 协议会把这个信息块发送给 Server端。信息块的组成:远程对象标识符。调用的方法描述。编组后的参数值(RMI协议中使用的是对象序列化)。既然 Client 端...
2024-01-10java线程锁死是什么
1、说明线程锁死是指等待线程由于唤醒其所需的条件永远无法成立,或者其他线程无法唤醒这个线程而一直处于非运行状态(线程并未终止)导致其任务 一直无法进展。2、线程锁死分为两种:(1)信号丢失锁死:信号丢失锁死是因为没有对应的通知线程来将等待线程唤醒,导致等待线程一直处于等...
2024-01-10java中jni是什么
说明1、jni的主要功能,从jdk1.1开始jni标准就成为了java平台的一部分,它提供的一系列的API允许java和其他语言进行交互,实现了在java代码中调用其他语言的函数。2、通常情况下我们一般使用jni用来调用c或c++中的代码。实例public class JniTest { static{ System.loadLibrary("MyNativeDll"); } ...
2024-01-10java中enumerate()的复制
说明1、enumerate()可用于Thread和ThreadGroup的复制。2、ThreadGroup可以加入若干个Thread以及若干个子ThreadGroup,使用该方法可以方便地进行复制。实例public static void main(String[] args) throws InterruptedException { ThreadGroup myGroup = new ThreadGroup("MyGroup"); Thread thread = new Thread(myG...
2024-01-10java中ThreadGroup如何创建
说明1、创建ThreadGroup可以直接通过构造方法创建。2、构造方法有两个,一个是直接指定名字(ThreadGroup为main线程的ThreadGroup),一个是带有父ThreadGroup与名字的构造方法。实例public static void main(String[] args) throws InterruptedException { ThreadGroup group1 = new ThreadGroup("name"); ThreadGroup group2 = new...
2024-01-10