同步线程
synchronized方法
一个类中任何方法都可以定义为synchronized方法以防止多线程数据崩溃。当某个对象用synchronized方法修饰时,表明该对象在任一时刻只能由一个线程访问。
声明方法体的一般格式:
<pre name="code" class="java"><pre name="code" class="java"> [modifier]synchronized returnType methodName([parameterList])
{
/*方法体*/
}
<blockquote style="margin: 0 0 0 40px; border: none; padding: 0px;"><pre name="code" class="java" style="text-align: justify;">synchronized关键字放在一段代码前限制他的执行,如:
<pre name="code" class="java"><pre name="code" class="html">[modifier]returnType methodName([parameterList])
{
synchronized (this)
{
/*some codes*/
}
}
wait()、notify()方法与死锁
<blockquote style="margin: 0 0 0 40px; border: none; padding: 0px;"><pre name="code" class="java">wait() 引起线程释放它对管程的拥有权二处于等待状态,直到被另一个线程唤醒。如果一个线程没有被唤醒,则它将永远等待下去。
notify()该方法通知一个等待线程:某个对象状态已经改变,等待的线程有机会重新获得线程的拥有权
<pre name="code" class="java">wait(),<span style="font-family: Arial, Helvetica, sans-serif;">notify()必须匹配使用。</span>