一、synchronized(Object o){ } //线程锁,不能在run方法内部new Object()
二、synchronized作为方法的修饰符。非静态方法synchronized锁住的对象是this,静态方法synchronized锁住的对象是class
三、创建锁类的对象:Lock l =new ReentrantLock(); l.lock(); l.unlock();\
公平锁和非公平锁:java默认非公平锁。
Lock l = new ReentrantLock(true); //公平锁
多线程通信:
休眠 wait(); 唤醒单个 notify(); 唤醒所有notifyAll();
线程池:缓存线程池、定长线程池、单线线程池、周期性任务定长线程池
缓存线程池:
ExecutorService service = Executors.newCachedThreadPool(); //静态方法
service.execute(new Runnable(){
@Override
public void run(){
}
});
定长线程池:
ExecutorService service = Executors.newFixedThreadPool(2); //静态方法,args:长度
单线线程池:
ExecutorService service = Executors.newSingleThreadPool(); //静态方法
周期性任务定长线程池: