1.synchronized关键字;
2.Object.wait(),Object.notify()可以用于多线程的工作。
3.volatile关键字用于保证多线程之间变量的可见性,但是只是使用volatile,无法避免线程不安全现象。
4.thread的wait,join方法的使用,不建议使用suspend,resume方法(可以用LockSupport的LockSupport.part(),LockSupport.unPark(thread)来代替)。
高级的线程安全控制:
JDK并发包:
1.ReentrantLock:除了实现基本的加锁功能外,增加了可重入,可中断(需要使用lock.lockInterruptibly();),可限时(lock.tryLock(3, TimeUnit.SECONDS);),公平锁的功能。
2.condition.await();,condition.signal();与ReentrantLock搭配使用,正如synchronized与Object.wait(),Object.notify()搭配使用。
3.semaphore可以看做是共享锁,能够让多个线程进入,只是可以控制进入的数量。
4.ReentrantReadWriteLock非常有用,是真正的多线程。读写互斥,写写互斥,读读不互斥(一般,在网站上读操作远多于写操作)。
5.CountDownLatch用于线程间的协调。
6.CyclicBarrier相当于可重用的CountDownLatch。