同步方法
你可以使用任何类对象的方法子集甚至是全集互斥因此在任何给定的时间只有一个方法能执行通过使用关键字synchronised在类中声明它们你可以构造互斥的方法例如
class MyClass
{
synchronized public void methodl()
{
//Code for the method
}
synchronized public void method()
{
//code for the me method
}
public void method()
{
//code foe the method
}
}
现在在任意时刻在类中只有一个同步方法可以执行只有在当前正执行的同步方法结束后才能可以启动针对同一个对象的另一个同步方法这里的想法是每个同步方法执行时保证对对象独占访问至少对涉及到的类对象的其他同步方法是这样
同步过程使用了每个对象与相关的一个内部锁(lock)该锁是一种标志当一个同步方法启动执行时由称为加锁(locking)的过程设置对一个对象的每个同步方法检查看看是否锁已被另一个方法设置如果已设置在重新设置成开锁方式前不能启动执行因此一次只能有一个同步方法执行因为设置锁的方法阻止任何其他同步方法启动
注意这里没有限制对同一类的两个不同对象同时执行同步方法只是针对同时访问任一个被控制的对象
在myClass类中的三个方法两个被声明成synchronized因此讨类的仟何一个对象同一时刻只能执行一个方法没被声明成同步的method()总可以由线程执行无沦同步方法是否正在执行
[] [] [] [] [] [] [] [] []