JDK并发包

JDK提供了大量实用的API和框架,来支持JDK内部功能:

  • 介绍更多多线程控制方法,比如之前的synchronized;
  • 介绍JDK中对线程池的支持,提高线程调度性能;
  • 向大家介绍JDK的一些并发容器。

1 多线程的团队协作:同步控制


  • synchronized 的功能扩展:重入锁
    • 使用java.util.concurrent.locks.ReentrantLock 类来实现
    • 需手动指定何时加锁,何时释放锁
    • 注意:必须记得释放锁,否则其他线程就没有机会访问临界区了;
    • 为什么叫重入锁:一个线程可以连续两次获得同意不锁,当然,释放时也需要释放两次;
public class ReentLock implements Runnable{
	public static ReentrantLock lock = new ReentrantLock();
	public static int i = 0;
	public static void main(String[] args) throws InterruptedException {
		ReentLock r= new ReentLock();
		Thread t1 = new Thread(r);
		Thread t2 = new Thread(r);
		t1.start();
		t2.start();
		t1.join();		//主线程愿意等到该线程执行完再执行
		t2.join();
		System.out.println(i);
	}
	@Override
	public void run() {
		for (int k = 0; k < 1000000; k++) {
			lock.lock();	//加锁
			lock.lock();	//第二次加锁
			i++;
			lock.unlock();	//解锁
			lock.unlock();	//第二次解锁
		}
	}
}
原文地址:https://www.cnblogs.com/sean-zeng/p/11024770.html