同步,是Object里的方法吗?是用来设定线程用的吗?? 我很不理解这个方法的作用 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 释放对象锁的情况:synchronized()语句块执行完,synchronized()语句块出现异常、持有锁的线程调用该对象的wait()方法。 多个线程同时访问同一个资源,如果线程之间协调不好的话,很容易出现前后数据不一致的情况。要想处理好这种情况可以使用线程同步。线程同步可以保证当一个线程(例如叫A线程)在访问一个资源的时候,其他的线程只能暂时的等待,当A线程把任务完成后才轮到其他的线程。可以在方法前面加一个synchronized关键字比如说: class Test { synchronized void add() { }}这样的话,当A线程来执行这个add方法时,A线程会把当前对象(也就是Test类的一个实例对象)给锁住了拿到了这个对象的锁。这样的话,其他线程暂时无法拿到这个对象的锁,就没有办法访问add方法,只能乖乖的等待,等A线程执行完后,释放了该对象的锁之后,才轮到其他线程来执行add方法。 有个很精点的例子,就是生产者与消费者的模型,生产与消费之间有一个缓冲仓库,仓库就是用同步实现的,public String push_pro(String pro){ //生产 lock.lock() //加锁 while(仓库==满){ 生产者线程等待; } 生产产品; 仓库+1; lock.unlock(); return pro; }public String get_pro(){ //消费 lock.lock() //加锁 while(仓库==空){ 消费者线程等待; } 消费产品; 仓库-1; lock.unlock(); return pro;}也可以用synchronized来实现。呵呵,2楼的说的很好! 调用static方法为什么没在方法名前加类名称 几十个经典题目,分享给大家,顺便提点我的错误 如何实现数据库的实时查询 java基础问题 java和C中如何把IP转换成网络字节顺序相互传输? 用java applet写email发送程序怎样通过安全认证? 如何实现在JTABLE的列标题分成两行显示.如这种功能 AAA\nBBB IIS and TOMCAT 满意的答案即可得到满意的分数 构造器的小问题,立刻在线送分!!!来者有分!!! ??新手求救! jComboBox选择变化问题 eclipse问题
很容易出现前后数据不一致的情况。要想处理好这种情况
可以使用线程同步。线程同步可以保证当一个线程(例如叫A线程)在访问
一个资源的时候,其他的线程只能暂时的等待,当A线程把任务完成后才轮到其他的线程。可以在方法前面加一个synchronized关键字比如说:
class Test {
synchronized void add() {
}
}
这样的话,当A线程来执行这个add方法时,
A线程会把当前对象(也就是Test类的一个实例对象)给锁住了拿到了
这个对象的锁。这样的话,其他线程暂时无法拿到这个对象的锁,就没有办法
访问add方法,只能乖乖的等待,等A线程执行完后,释放了该对象的锁之后,才轮到其他线程来
执行add方法。
public String push_pro(String pro){ //生产
lock.lock() //加锁
while(仓库==满){
生产者线程等待;
}
生产产品;
仓库+1;
lock.unlock();
return pro;
}public String get_pro(){ //消费
lock.lock() //加锁
while(仓库==空){
消费者线程等待;
}
消费产品;
仓库-1;
lock.unlock();
return pro;
}也可以用synchronized来实现。呵呵,2楼的说的很好!