要实现线程同步有两种方法,一种是使用关键字sunchronized,一种是同步锁Lock。两种方法的使用方式基本相同,具体实现如下。
一:同步关键字:synchronized
run()
{
synchronized(obj)
{
...
}
}
public synchronized method() {}
二:同步锁:Lock
Lock lock = new ReentrantLock(); //同步锁
Condition condition = lock.newCondition(); //控制wait和notify的类
condition.await(); // = wait()
condition.signal(); // = notify()
//常用操作
Lock lock = new Reentrantlock();
Condition condition = lock.newCondition();
run()
{
lock.lock();
while( ... )
{
condition.await();
}
...
condition.signal();
lock.unlock();
}