代码浅析 Android Lock 、ReentrantLock线程锁及其作用

本文探讨了编程中的互斥锁概念,解释了在高并发场景下为保证数据完整性和一致性使用锁机制的重要性。在Android中,重点讨论了synchronized关键字、Lock接口以及ReadWriteLock的使用,展示了如何通过Lock实现线程间的读写互斥,以优化并发性能。
摘要由CSDN通过智能技术生成

先来了解什么是“互斥锁”?

百度一下,解释如下:在编程中,引入了对象互斥锁的概念,来保证共享数据操作的完整性。每个对象都对应于一个可称为" 互斥锁" 的标记,这个标记用来保证在任一时刻,只能有一个线程访问该对象。

是的,面对高并发的读、写访问,可能会出现数据丢失的问题,而Andriod系统基于Linux内核,使得并发读、写数据可以没有限制的进行。因此,出于对数据,尤其是共享数据的完整性和一致性,我们需要用到锁机制来确保数据的可靠性。

在Android中,有三类锁可以解决上述问题:

1:synchronized

这是java中比较常见的一种同步锁关键字,由于常见,这里就不一一介绍了,详见:http://blog.csdn.net/luoweifu/article/details/46613015

2:Lock
先看看继承关系:


使用之前我们先看看,模拟并发的情况:

package SychronizedTest;

import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;

public class SychronizedTest {

	/**
	 * @author zy_style
	 * @param args
	 */
	public static void main(String[] args) {
		final Outputter outputter = new Outputter();
		// 开启一条线程输出名字的每个字符
		new Thread() {
			@Override
			public void run() {
				try {
					outputter.output("abcde");
				} catch (InterruptedException e) {
					e.printStackTrace();
				}
			}
		}.start();
		// 开启另一条线程
		new Thread() {
			@Override
			public void run() {
				try {
					outputter.output("fghij");
				} catch (InterruptedException e) {
					e.printStackTrace();
				}
			}
		}.start();
	}
}

class Outputter {
	public void output(String name) throws InterruptedException {
		for (int i = 0; i < name.length(); i+
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值