自定义同步工具就是自定义锁,也就是锁的实现方式
重入锁:凡是底层用AQS实现的都是重入锁,基本所有锁都是重入锁,获取锁的状态修改再加回去实现锁的重入
公平锁和非公平锁:(实现原理代码差别只有一个就是判断该线程是否是就绪队列第一个线程)就绪队列的线程,公平锁会按就绪队列的线程顺序获取锁,非公平锁会按谁先自旋成功谁先执行;一般非公平锁性能更好一些,因为公平锁会有很多因为顺序无法获取锁的无效自旋,非公平锁会不在乎顺序直接获取锁
读写锁和排他锁:读写锁有读锁和写锁两种状态,可以同时读不能同时写,排他锁读写线程都不能同时进行;在读多于写的情况下,读写锁性能好于排他锁,在写多一些的情况下,两种锁性能相似
Condition():按条件有选择的唤醒线程