最近在看《JAVA2核心技术》的多线程一章,P647写道:
①如何理解“使用内部锁”?是要像如下写法吗:public class Vector<E>
{
private Object obj;
public void method_1()
{
synchronized(obj) //这个就是所谓“使用内部锁”?
{
...
}
}
}
②为什么要依赖于“Vector类的自己的所有可修改方法都使用内部锁”这个事实?
java 内部锁 vectorjava多线程内部锁
①如何理解“使用内部锁”?是要像如下写法吗:public class Vector<E>
{
private Object obj;
public void method_1()
{
synchronized(obj) //这个就是所谓“使用内部锁”?
{
...
}
}
}
②为什么要依赖于“Vector类的自己的所有可修改方法都使用内部锁”这个事实?
java 内部锁 vectorjava多线程内部锁
解决方案 »
- 一道很基础的题,希望大家帮忙解决一下
- 急急急:选项卡的问题????????????
- 用swing怎么实现一个 计算器的功能?
- 一个高手说 禁用客户端的COOKIE 客户端禁用COOKIE 不一样不知道有人知道这是什么意思有什么区别吗?
- 【急】运行jvm本身会耗费多少内存
- 想让大家帮我检查下! 我自己写的作业!
- 对于oracle查询的结果resultset处理
- applet如何发音?
- HttpServletRequest.setCharacterEncoding("gb2312");编译时报如下错
- DatagramSocket是不是一个socket?
- java io 读入文件 怎么过滤特殊字符
- JAVA容器排序问题
public class Vector<E>
{
private Object obj;
private boolean flag = true;
public void method_1()
{
if(flag){
synchronized(obj) //这个就是所谓“使用内部锁”?
{
flag=false;
...
flag=true;
}
}
}
}
这样每次都会判断flag 而不会判断所 这样节约资源和时间
对每个Vector对象,都要先获得obj的锁
因为这个private Object obj放在Vector内部,且是私有的,所以叫内部锁
可是我在Vector类里面并没有发现有一个private Object类型的字段。我的JDK版本是jdk1.7.0_15。
晕 ,我以为你贴出来的是官方源代码
Vector的方法都用synchronize修饰了,
所谓内部锁就是Vector对象本身吧