本帖最后由 吴愿涛 于 2012-11-2 21:33 编辑
1、线程同步允许一次只有一个线程访问共享资源。使用同步关键字synchronized来进行标识。同步可分为同步方法和同步块。
2、使用线程同步有可能造成死锁,为避免这种情况,java提供了线程间通信机制。实现线程之间通信的三个方法是wait(),notify()和notifyAll()。这三个方法是类Object中定义的方法,只能用于synchronized方法中。调用wait()方法,使线程进入等待池。调用notify()方法,唤醒等待池中第一个等待的线程。调用notifyAll()方法,唤醒多个在等待的线程。
3、单例模式也叫单态模式或Singleton模式。运行期间能且只能产生一个对象。如:
public class Singleton {
private static Singleton instance = null;
private Singleton() {
}
public static Singleton getInstance() {
if (instance == null) {//这次判断将所有非第一次产生对象的线程排除
synchronized (Singleton.class) {//都是第一次产生对象的线程在此排队
if (instance == null) {//只允许第一个进入同步块的线程产生对象
instance = new Singleton();
}
}
}
return instance;
}
} |