2016 - 2024

感恩一路有你

怎么给java应用做加密锁 java哪个关键字可以对对象加互斥锁?

浏览量:1181 时间:2023-04-19 20:28:57 作者:采采

java哪个关键字可以对对象加互斥锁?

首先,Java中的synchronized可以实现对象上的互斥锁。

其次,让 下面谈谈同步互斥锁的实现原理。在Java虚拟机中,synchronized支持的同步方法和语句都是使用monitor实现的。每个对象都与一个监视器相关联。当线程执行由监视器监视的代码块中的第一条指令时,该线程必须获得被引用对象上的锁,该锁由监视器实现。在热点虚拟机中,monitor由ObjectMonitor实现,C语言编写,具体代码在热点虚拟机源代码ObjectMonitor.hpp文件中。

查看源代码,你会发现主要的属性有_count (_recursions线程获取锁的次数)、_ recurrences(重新进入的锁数)、_owner(指向持有ObjectMonitor对象的线程)、_WaitSet(等待状态的线程集)和_EntryList(等待锁块状态的线程队列)。

当并发线程执行同步的修改方法或语句块时,它首先进入_EntryList。当一个线程获得对象的monitor时,将monitor对象中的_owner变量设置为当前线程,同时monitor对象中的counter _count加1,使当前线程成功获得同步锁。

当同步修饰方法或语句块中的线程调用wait()方法时,当前线程将释放它持有的monitor对象,monitor对象中的_owner变量将被赋值为null。同时monitor对象中的_count值会减1,然后当前线程进入_WaitS

Java编写一个简单的窗口程序?

导入公共类work { public static void main(String[]args){//todo自动生成的方法存根//添加用户名和密码正确信息字符串useName #34ABC#34。

字符串userPwd #34123#34

扫描仪sc新扫描仪()

(# 34-输入用户名和密码-# 34)

(#34用户名:#34)

字符串()

(#34密码:#34)

字符串密码()

我f(name usename amp password use pwd){(# 34用户名Mina可以正确登录# 34);

} else {(# 34错误的用户名或密码#34)}

对象 线程 方法 monitor

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。