首页 > 常见问答

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

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

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

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

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

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

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

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

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

导入公共类work{publicstaticvoidmain(string[]args){//todo自动生成的方法存根//添加用户名和密码正确信息字符串usename#34abc#34。

字符串userpwd#34123#34

扫描仪sc新扫描仪()

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

(#34用户名:#34)

字符串()

(#34密码:#34)

字符串密码()

我f(nameusenameamppasswordusepwd){(#34用户名mina可以正确登录#34);

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

对象线程方法monitor

原文标题:怎么给java应用做加密锁 java哪个关键字可以对对象加互斥锁?,如若转载,请注明出处:https://www.angelbnb.com/wenda/20577.html
免责声明:此资讯系转载自合作媒体或互联网其它网站,「天使号」登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述,文章内容仅供参考。