`
endual
  • 浏览: 3566627 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

java并发访问的几个工具类的简单说明

    博客分类:
  • java
 
阅读更多

package com.endual;

import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.BrokenBarrierException;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.CyclicBarrier;
import java.util.concurrent.Exchanger;
import java.util.concurrent.Semaphore;
import java.util.concurrent.TimeUnit;

public class SemaphoneMain {

    //semaphone可以维护当前访问自身的线程的个数,并且提供了同步机制。
     //使用semaphone可以控制同时访问资源的线程个数。例如,实现一个文件的并发访问数。
    //semaphore 实现的功能就类似测试的五个坑,例如有十个人要上测试,那么同时有多少
    //个人要上厕所呢?只能同时有5个人来占用,当5个人用用后,空出来的,就有人再进去用
    Semaphore sp = new Semaphore(3) ;
    private int parties = 1;
    //表示大家彼此等待,大家集合号才开始出发,分散活动后又在指定地点碰面,这就好比整个公司的
    //的人员利用周末时间集体郊游一样,先各自从自家出发到公司后,在同时出发到公园游玩,
    //再指定地点集合好以后再同时开始就餐
    CyclicBarrier cb = new CyclicBarrier(parties ) ; //同步工具类
    private int count = 20 ;
   
    //犹如倒计时器,调用这个多谢的countdown方法就将计时器减去一,当计时器为0是做所有等待的线程
    //就立马自己开始运行
    CountDownLatch cdlx = new CountDownLatch(count ) ;
    //用于两个人之间实现的数据交换,每个人在完成一定的事物以后就想着和对方交换数据
    //第一个人先拿出数据的人将一直等待第二个人拿着数据到来时,才能彼此交换数据
    Exchanger exch = new Exchanger() ;
    public void testAyclicBarrier() throws Exception, BrokenBarrierException {
        CountDownLatch cdlx = new CountDownLatch(count ) ;
        cb.await() ;
        cb.getNumberWaiting() ;
        cb.isBroken() ;
       
        cdlx.countDown() ; //减去一
        cdlx.getCount() ;
        cdlx.await() ;//当家都等待着
       
        exch.wait() ;
        Object x = null;
        exch.exchange(x) ; //该线程和object进行数据交换 ??
        TimeUnit unit = null;
        long timeout;
        //exch.exchange(x, timeout, unit) ;
       
        int capacity = 1;
        //可阻塞队列用来同步
        ArrayBlockingQueue<String> abkq = new ArrayBlockingQueue<String>(capacity);
        String e = "name";
        abkq.add(e ) ;
        abkq.put(e) ;
       
       
       
    }
   
   
    public void main() {
       
        try {
            sp.acquire() ;
        //    sp.isFair() = true ;
        //    sp.isFair() = false ;
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        sp.release() ;
       
    }
   
}

分享到:
评论

相关推荐

    java并发编程实战源码,java并发编程实战pdf,Java

    在Java并发编程中,主要涉及以下几个关键知识点: 1. **线程与进程**:线程是程序执行的最小单元,一个进程中可以有多个线程同时执行。理解线程的概念和生命周期对于并发编程至关重要。 2. **线程安全**:当多个...

    java并发编程2

    以下是对标题和描述中所提及的几个知识点的详细解释: 1. **线程与并发** - **线程** 是操作系统分配CPU执行时间的基本单元,每个线程都有自己的程序计数器、虚拟机栈、本地方法栈和一部分堆内存。 - **并发** 指...

    java并发编程与实践

    该文档可能涵盖了以下几个关键知识点: 1. **线程基础**:解释了如何创建和管理线程,包括使用Thread类和实现Runnable接口的方式。还可能讨论了线程的生命周期,如新建、就绪、运行、阻塞和死亡等状态。 2. **同步...

    java 并发编程的艺术pdf清晰完整版 源码

    本书的核心内容可能包括以下几个方面: 1. **线程基础**:首先,书中会介绍线程的基本概念,包括如何创建和管理线程,线程的状态转换,以及线程间的通信方式(如join、interrupt等)。 2. **同步机制**:接着,会...

    Java并发编程实践.pdf

    #### 三、Java并发工具类 ##### 3.1 原子类 Java并发工具包中提供了原子类,如AtomicInteger、AtomicLong等,它们可以实现对整型或长整型变量的原子操作,无需显式加锁即可保证线程安全。 ##### 3.2 阻塞队列 阻塞...

    java并发工具类(CountDownLatch+Semaphore+Exchanger)

    在实际应用中,这三个工具类可以灵活组合使用,以满足复杂的并发控制需求。例如,CountDownLatch可以用于确保所有参与者准备好后再开始一个活动,Semaphore可以限制并发访问特定资源的线程数量,而Exchanger则可以在...

    深入浅出_Java并发工具包原理讲解

    本文将深入浅出地探讨J.U.C的原理和实现机制,主要包括以下几个方面: 1. 原子操作:原子操作是并发编程中的基础,它能够保证线程安全的进行加减操作或其他简单的计算。Java中提供了Atomic类来支持原子操作,例如...

    《Java并发编程的艺术》源代码

    第1章介绍Java并发编程的挑战,向读者说明进入并发编程的世界可能会遇到哪些问题,以及如何解决。 第2章介绍Java并发编程的底层实现原理,介绍在CPU和JVM这个层面是如何帮助Java实现并发编程的。 第3章介绍深入介绍...

    java并发集合

    Java并发集合中最核心的几个类包括: 1. **ConcurrentHashMap**:线程安全的哈希映射表,它比synchronized的Hashtable或Collections.synchronizedMap()包装的HashMap有更高的并发性能。ConcurrentHashMap采用了分段...

    JAVA并发编程实践

    2. **Java并发API**:书中详细讲解了Java并发库中的核心组件,如`ExecutorService`、`Future`、`Callable`、`Runnable`接口,以及`Semaphore`、`CountDownLatch`、`CyclicBarrier`等同步工具类。这些工具能帮助...

    http并发访问 java源码

    在Java中实现HTTP并发访问,主要涉及以下几个关键知识点: 1. **线程池**:为了处理多个并发请求,我们需要使用线程池来管理和调度线程。Java的`ExecutorService`和`ThreadPoolExecutor`类是实现这一目标的常用工具...

    我的java并发PPT

    3. **并发工具类**: `java.util.concurrent`包提供了丰富的并发工具类,如`Semaphore`(信号量)、`CountDownLatch`(计数器)、`CyclicBarrier`(回环栅栏)和`FutureTask`等,这些工具能更高效、灵活地控制线程间...

    实战Java高并发程序设计(高清版)

    4. **并发工具类**:Java并发包(java.util.concurrent)中包含了很多实用的工具类,如`Future`、`CompletableFuture`、`Semaphore`等,这些工具可以帮助开发者更好地管理并发任务。 5. **J.U.C框架**:Java并发 ...

    java并发编程经典书籍(英文版)

    - **并发工具类**:在JDK 1.5之前,书中介绍了Semaphore、Barrier等并发工具,它们用于控制对共享资源的访问。 - **死锁、活锁和饥饿**:讨论了并发编程中可能出现的这些问题及其避免方法。 - **线程安全的数据...

    Java并发编程事件 mobi kindle版

    4. **并发工具类**:深入剖析了Java并发工具类的实现原理,如ConcurrentHashMap、LinkedBlockingQueue、ConcurrentSkipListMap等,并提供了实际应用示例。 5. **线程池**:详细解析了Executor框架,包括线程池的...

    Java常用工具类

    本篇将详细介绍Java开发中的常用工具类,涵盖以下几个方面: 1. **集合操作:** `java.util.Collections` 类提供了对集合对象进行各种操作的静态方法,如排序、填充、反转等。例如,`Collections.sort()` 可以对...

    Java 并发编程实战 中英文+代码示例

    在Java并发编程领域,以下几个核心知识点是本书的重点: 1. **线程基础**:介绍Java中的Thread类,如何创建和启动线程,以及线程的生命周期状态(新建、就绪、运行、阻塞和死亡)。 2. **并发控制**:讲解...

    Java并发编程实践(Java Concurrency in Practice) (中英版)

    《Java并发编程实践》是Java开发者深入理解和应用并发编程的权威指南,这本书全面覆盖了Java并发编程的各种核心概念和技术,旨在帮助程序员编写出高效、安全的并发代码。书中的内容既包括理论知识,也包含丰富的实战...

    JAVA并发编程与高并发解决方案 JAVA高并发项目实战课程

    #### 二、Java并发工具类 ##### 2.1 `ExecutorService` `ExecutorService`是Java提供的高级线程池接口,它可以控制线程的数量,重用线程,以及管理线程的生命周期。 - **示例代码**: ```java ExecutorService ...

    java常用的util工具类

    这里我们将深入探讨几个在标题和描述中提到的`util`工具类及其在实际项目中的应用。 1. **MD5加密**: `java.security.MessageDigest`是Java中用于进行哈希计算的类,包括MD5(Message-Digest Algorithm 5)加密。MD...

Global site tag (gtag.js) - Google Analytics