同一个线程怎么调用多个被声明为synchronized的函数 (synchronized函数都是在同一个类中)
解决方案 »
- 猴子分桃
- 关于Hibernate ehcache二级缓存的问题(有点难度), 请帮忙, 谢谢!
- struts2.x和webwork有什么关系?
- java :table or view does not exist
- struts初学问题---还请各位帮忙说说
- 网站中的浏览历史是怎样按照cookie里排序的方式回显到页面上的
- 哪里有jaxp.jar下,急~~~~~~~~~~~~~~~~~~~~~~~~~~
- 关于Hibernate的GUI配置工具
- 怎样用java编写一个杨辉三角形
- HTTP Status 500 - Filter execution threw an exception
- Java用xsl对xml做格式转换时抛出ArrayIndexOutOfBoundException
- Spring的batchUpdate问题,请教高手!
public class Test implements Runnable{
private int id=0;
public synchronized void add1(){
id++;
}
public synchronized void add2(){
id=id+2;
}
public void run(){
for(int i=0;i++;i<100){ add1();
add2();}
}public static void main(String [] args){ Thread t=new Thread(new Test(););
t.start();}
}用上面这个demo给你解释一下,随手写的,没编译过 有错误你自己改一下。首先弄清楚 实现 Runnable接口或者 继承Thread类实际上是定义了一个可以被线程驱动执行的任务,这个任务可以由一个线程执行,也可以由多个同时执行, 当多个线程共同访问共享区域时,就会产生问题, 所以 用
synchronized 对共享区域进行互斥, 防止 多个线程同时访问共享区域。简单来说可以这么理解。
从你的问题来说 , 你应该先去找本书仔细看看