JAVA高并发程序设计学习-JDK并发包:同步控制一

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA高并发程序设计学习-JDK并发包:同步控制一相关的知识,希望对你有一定的参考价值。

JDK内部提供了大量的API和框架,这里主要介绍三部分

  • 多线程同步控制方法
  • 线程池,提高线程调度的性能
  • JDK的并发容器

重入锁:java.util.concurrent.locks.ReenterLock

在代码中,类ReenterLock实现了Runnable,其中有static的变量i,在run()方法中会对i进行自增操作。

自增操作的步骤为:get-set,先获取值再增加值。

如果在这里不进行控制的话,会导致get的值不是最新set的值

因此,在自增的时候使用锁进行控制,保证get-set操作的时候只有一个线程操作。

package com.tuniu.concurrency;

import java.util.concurrent.locks.ReentrantLock;

public class Lock {
	public static void main(String[] args) {
		ReenterLock lock = new ReenterLock();
		Thread t1 = new Thread(lock);
		Thread t2 = new Thread(lock);
		t1.start();
		t2.start();
	}
}

class ReenterLock implements Runnable {
	public static ReentrantLock lock = new ReentrantLock();
	public static int i = 0;
	
	public void run() {
		for (int j = 0; j<1000; j++) {
			lock.lock();
			try {
				i++;
			} finally {
				lock.unlock();
			}
		}
	}
	
}
 

以上是关于JAVA高并发程序设计学习-JDK并发包:同步控制一的主要内容,如果未能解决你的问题,请参考以下文章

Java高并发--------JDK并发包-------3

Java 并发编程实践基础 读书笔记: 第三章 使用 JDK 并发包构建程序

Java并发包下锁学习第二篇Java并发基础框架-队列同步器介绍

3.java并发包

java并发-锁-ReentrantLock(重入锁)和ReentrantReadWriteLock(读写锁)

JDK并发包[同步控制]