`

Java并发编程-客户端加锁机制

    博客分类:
  • JAVA
阅读更多

Java并发编程P61

public class ListHelper<E> {
    public List<E> list = Collections.synchronizedList(new ArrayList<E>());

    /**
     * 非线程安全,每个实例对象都有唯一的锁来保证对象的原子一致性。
     * synchronized修饰在方法上保证ListHelper对象实例的原子性,list实例的原子性得不到保证。
     * @param x
* @return
*/
public synchronized boolean putIfAbsentNotSafe(E x) {
        boolean absent = !list.contains(x);
        if (absent) {
            list.add(x);
        }
        return absent;
    }

    public boolean putIfAbsent(E x) {
        synchronized (list) {
            boolean absent = !list.contains(x);
            if (absent)
                list.add(x);
            return absent;
        }
    }
}
分享到:
评论

相关推荐

    Java并发编程实战

    4.4.1 客户端加锁机制 4.4.2 组合 4.5 将同步策略文档化 第5章 基础构建模块 5.1 同步容器类 5.1.1 同步容器类的问题 5.1.2 迭代器与Concurrent-ModificationException 5.1.3 隐藏迭代器 5.2 并发容器 ...

    Java 并发编程实战

    4.4.1 客户端加锁机制 4.4.2 组合 4.5 将同步策略文档化 第5章 基础构建模块 5.1 同步容器类 5.1.1 同步容器类的问题 5.1.2 迭代器与Concurrent-ModificationException 5.1.3 隐藏迭代器 5.2 并发容器 ...

    Java并发编程(学习笔记).xmind

    Java并发编程 背景介绍 并发历史 必要性 进程 资源分配的最小单位 线程 CPU调度的最小单位 线程的优势 (1)如果设计正确,多线程程序可以通过提高处理器资源的利用率来提升系统吞吐率 ...

    杭州-蚂蚁金服-Java高级 java并发编程、JVM等

    - **并发支持**:通过使用分段锁技术(在1.7版本中)或者CAS加锁机制(1.8版本)来支持并发操作,这使得它能够在多线程环境中高效地工作。 ### 3. 并行与并发的区别 - **并发**:指的是多个任务看起来同时执行,但...

    java实现多线程的网络并发服务器.pdf

    通过上述知识点,可以看出文档主要描述了如何使用Java语言和相关的API实现一个网络并发服务器,其中涉及到网络通信、多线程编程、异常处理、同步机制等众多核心概念和技术点。这些知识点对理解Java网络编程模型及多...

    Java心得文件

    ### Java心得文件:深入探索Java网络编程与多线程机制 #### 核心知识点概览 在本篇文章中,我们将围绕“Java心得文件”的主题,深入解析Java编程语言中的网络编程与多线程机制,旨在为Java新手提供一系列实用且...

    Java面经.pdf

    ### Java并发编程 Java中的多线程编程是通过Thread类和Runnable接口实现的。线程有多种状态,包括新建态、就绪态、运行态、阻塞态和死亡态。线程分为用户线程和守护线程,用户线程需要手动停止,而守护线程在程序无...

    《Java虚拟机精讲》PDF版本下载.txt

    Java并发编程涉及锁、线程池、并发工具类等多个方面。JVM提供了丰富的机制来支持并发编程,包括: - **锁**:用于控制多个线程对共享资源的访问,保证数据的一致性。 - **线程池**:通过复用预分配的线程,降低创建...

    huawei面试题--java篇

    虽然题目中并未给出具体的实现代码,但在实际应用中,可以通过Java的`Socket`和`ServerSocket`类来实现客户端和服务端之间的通信。客户端创建`Socket`对象连接服务端,服务端通过监听`ServerSocket`接收客户端连接...

    java基于redis 全栈开发.rar

    Java作为广泛使用的后端编程语言,与Redis的结合可以提供高效的数据处理能力,提升应用性能。 1. **Redis基础知识**: - Redis是内存数据库,提供快速读写操作。 - 支持五大数据类型:字符串(Strings)、哈希...

    Java中级面试题

    ### Java中级面试题详解 #### Java基础 **1. StringBuffer的实现方式,容量如何扩充** - **实现方式**: `StringBuffer`内部通过一个字符数组`char[] value`来存储字符串内容。 - **容量扩充**: 当执行`append`...

    java聊天室源程序

    根据提供的信息,我们可以深入分析Java聊天室程序的关键组成部分与其实现机制。该程序主要由三个类构成:`BroadCast`、`CleanDead` 和 `ClientThread`,它们分别负责消息广播、清理离线用户和处理客户端请求。接下来...

    秒杀代码-distributed-lock-seckill.zip

    秒杀系统是电商领域常见的一种高并发场景,用于在短时间内处理大量用户对限量商品的抢购请求。在设计这样的系统时,分布式锁是一种关键的技术...同时,这也是对Java并发编程、分布式系统和数据库操作的一次实践性学习。

    java面试精华2

    ### Java面试精华知识点详解 #### 一、JVM内存划分 **1.1 程序计数器(Program Counter Register)** - **定义**: 当前线程所执行的字节码的行号指示器,用于记录当前线程所执行的字节码的地址。 - **特性**: - **...

    Java后端面试题大纲(涵盖了百分之九十的考点).pdf

    #### Java并发 1. **同步和互斥的区别** - 同步是指两个或多个进程(线程)之间相互配合的一种机制。 - 互斥是指多个线程同时访问一个资源时,保证只有一个线程可以访问该资源。 - 实现同步的常见方式有锁、条件...

    多线程文件加锁自动定时查询mysql统计数据

    在IT领域,多线程和文件加锁是并发编程中的重要概念,而MySQL数据库则常用于存储和处理统计数据。这个项目或任务的核心是利用多线程技术,通过文件加锁来确保数据一致性,并且定时从MySQL数据库中获取并处理统计数据...

    java面试题目

    - **概述**:Java的Concurrent包提供了丰富的并发工具类,支持多线程编程。 - **核心类**: - `ExecutorService`:线程池接口。 - `Future`:表示异步计算的结果。 - `Semaphore`:控制对有限资源的访问。 - `...

Global site tag (gtag.js) - Google Analytics