创建线程:extends Thread, implements Runnable|Callable
Thread方法: sleep睡眠、join插队到当前线程执行、yield出让CPU时间不释放对象锁、intrrupt发送中断信号不一定中断
对象方法:wait引用此对象的所有线程都等待、notify、notifyAll唤醒对象的所有线程, 提供等待通知机制,可用于实现阻塞队列
获取ID: getId线程对象的方法(通常是被调用线程的方法),Thread.getCurrentThread().getId()调用线程的方法;
synchronized: 阻塞是对象锁,一直尝试获取锁,锁的代码块一定要执行完,不会被中断
lock:可以非阻塞地获取锁,可以中断,标准写法:lock.lock();try{}finally{lock.unlock();}
ReentrantLock:可重入锁,可用于递归场景;
ReentrantReadWriteLock:读写锁,支持多个读线程,一个写线程, 获取写线程时阻塞读线程;方法writeLock获取写锁,readLock获取读锁;
Condition:await等待、awaitUninterruptibly不能被中断的等待、singal唤醒(推荐)、singalAll唤醒所有,等待唤醒如下:
Lock lock = new ReentrantLock(); Condition cond = lock.newCondition();
public void waitcond(){lock.lock();try{condition.await();}finally{lock.unlock();}}
public void waitnotify(){lock.lock();try{condition.singal();}finally{lock.unlock();}}