这是我从java.lang.Thread 中拷出的一段代码,我想问的是,blockLock用来锁谁的,
每创建一个线程,这个对象锁就不同,它还能同步吗?private volatile Interruptible blocker;
private Object blockerLock = new Object(); /* Set the blocker field; invoked via sun.misc.SharedSecrets from java.nio code
*/
void blockedOn(Interruptible b) {
synchronized (blockerLock) {
blocker = b;
}
}
每创建一个线程,这个对象锁就不同,它还能同步吗?private volatile Interruptible blocker;
private Object blockerLock = new Object(); /* Set the blocker field; invoked via sun.misc.SharedSecrets from java.nio code
*/
void blockedOn(Interruptible b) {
synchronized (blockerLock) {
blocker = b;
}
}
解决方案 »
- 关于内部类用static修饰
- 基础题,关于调用方法的阶乘
- 求 RSA 工具类。提供加密,解密,生成密钥对等方法,实现代码
- 请教如何检验用户传入的类型是正确的?
- 一个java笔试题
- e.getSouce()的问题
- 求救:急,解决问题马上给分。。。。关于servlet自动定时器的问题,,,下面是我的sevlet类,问题是它为什么在每次服务器开启的时候会执
- PrintTest.java的目录是C:\javacode\com\szallcom\tools;C:\javacode\wf\common目录有SystemProperties.class;编译要求引入wf.common.S
- 如何使得在不新开窗口的情况下,页面变动时而页面的背景音乐不做变化?
- java 调用fortran动态链接库 invalid memory access
- 这样的文件为何不能被Load进来呢?
- 虚心求教!望大神帮忙!
synchronized (blockerLock) {
blocker = b;
}
这样就保证了,同一个时间点修改blocker值的线程只有一个!
{
private Object obj = new Object(); public static void main(String[] args)
{
Hello one = new Hello();
Hello two = new Hello();
System.out.println(one.getObj() == two.getObj());
} public Object getObj()
{
return obj;
} public void setObj(Object obj)
{
this.obj = obj;
}
}
http://blog.csdn.net/axman/archive/2005/07/22/431802.aspx
这片博文。我觉得就是文中说的虚拟锁的应用,让同步区域(资源)更小化。
整个都是同一个线程A的事情,并不是A跟别的线程A1,A2这些兄弟线程之间同步什么,他们也个人有个人的blockerLock,用来应付外部设置中断标志的时候自身不被阻塞。
synchronized (blockerLock) {
blocker = b;
}
同步我觉得没用,