java中的线程同步的工具以及方法的一些理解

synchronized关键字, 同步方法,类和代码块,主要是用于多线程环境下共享变量的排他访问。在多线程环境下,对一个共享变量的访问,必须得到该共享变量设定的排他锁,如果不遵守这样的约定,那么共享变量在多线程中进行修改其结果将是不可预测的,同时在进行monitor方法调用时将会抛出异常信息。
Object类中wait方法的作用:使调用线程进入该对象的等待队列中,在调用上必须先要获取Object对象实例的锁,才可以进行wait操作,否则将会抛出未获得对象锁的异常,当调用wait方法后,将调用线程放入对象的等待队列,并释放对象锁。wait和notify必须成对使用。

synchronized(object)
{
while(someConditionNotSatify)
{
try{
//make the calling thread await and release object's lock.
object.wait();
}
catch(InterruptedException e){}
}
// condition has been satified.
// do some task need to be synchronized
}
// do other task

直到有其他线程调用Object对象实例的notify和notifyAll方法唤醒该等待线程。唤醒线程在调用上同样需要满足获得对象实例锁,调用对象实例的notify或者notifyAll。
 synchronized(object)
{
// do the task need to be synchronized
// dosomething to change waiting condition
//唤醒等待队列中的某个线程
object.notify();
}
//同步块结束,释放锁
// do other task

或者
synchronized(object)
{
// do the task need to be synchronized
// dosomething to change waiting condition
//唤醒等待队列中的所有等待线程
object.notifyAll();
}
//同步块结束,释放锁
// do other task
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值