`
tinkame
  • 浏览: 6118 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java 并发学习笔记

阅读更多

      ExecutorService es2= Executors.newFixedThreadPool(2);
        ExecutorService es = Executors.newCachedThreadPool();
        ScheduledExecutorService ses = Executors.newScheduledThreadPool(1);
        
        ReentrantLock rl = new ReentrantLock();
        ReentrantReadWriteLock  rwl = new ReentrantReadWriteLock ();
        SynchronousQueue<Integer> queue = new SynchronousQueue();
        queue.add(null);
        queue.offer(null);
        
        Object a = new Object();
        a.wait(12l);
        
        CountDownLatch cd = new CountDownLatch(1);

CyclicBarrier
        cd.await();


Condition 实现可以提供不同于 Object 监视器方法的行为和语义,比如受保证的通知排序,或者在执行通知时不需要保持一个锁定。

Semaphore:
信号量维护了一个许可集合。如有必要,在许可可用前会阻塞每一个 acquire(),然后再获取该许可。每个 release() 添加一个许可,从而可能释放一个正在阻塞的获取者。

Timer
1.AbstractQueuedSynchronizer :

同步器背后的基本思想非常简单。acquire操作如下:

while (synchronization state does not allow acquire) {
enqueue current thread if not already queued;
possibly block current thread;
}
dequeue current thread if it was queued;
release操作如下:

update synchronization state;
if (state may permit a blocked thread to acquire)
unblock one or more queued threads;


AQS框架提供了一个 ConditionObject 类,给维护独占同步的类以及实现 Lock 接口的类使用。一个锁对象可以关联任意数目的条件对象
ConditionObject 使用了与同步器一样的内部队列节点。但是,是在一个单独的条件队列中维护这些节点的。 signal 操作是通过将节点从条件队列转移到锁队列中来实现的,而没有必要在需要唤醒的线程重新获取到锁之前将其唤醒
基本的await操作如下:

1
create and add new node to conditon queue;
2
release lock;
3
block until node is on lock queue;
4
re-acquire lock;
signal操作如下:

1
transfer the first node from condition queue to lock queue;


• 生成 ExecutorService 的工厂类
– newSingleThreadExecutor () : corePoolSize = maximumPoolSize =1 , workQueue = LinkedBlockingQueue ( 容量是 Integer.MAX_VALUE )
– newCachedThreadPool () : corePoolSize =0 , maximumPoolSize = Integer.MAX_VALUE , keepAliveTime =60s , workQueue = SynchronousQueue ( 容量是 0)
– newFixedThreadPool ( int   nThreads ) : corePoolSize = maximumPoolSize = nThreads , keepAliveTime =0 , workQueue = LinkedBlockingQueue ( 容量是 Integer.MAX_VALUE )
– newSingleThreadScheduledExecutor () :单线程,延迟执行任务
– newScheduledThreadPool ( int   corePoolSize ) : corePoolSize , maximum=       Integer.MAX_VALUE , keepAliveTime =0 , workQueue = DelayedWorkQueue


http://ifeve.com/introduce-abstractqueuedsynchronizer/
分享到:
评论

相关推荐

    Java 并发学习笔记:进程和线程,并发理论,并发关键字,Lock 体系,原子操作类,发容器 &amp; 并发工具,线程池,并发实践

    Java 并发学习笔记: 进程和线程, 并发理论, 并发关键字, Lock 体系, 原子操作类, 发容器 & 并发工具, 线程池, 并发实践 Java是一种面向对象的编程语言,由Sun Microsystems于1995年推出。它是一种跨平台的...

    java并发学习笔记

    以上就是Java并发学习笔记的主要内容,这些知识点构成了Java并发编程的基础,理解和掌握它们对于编写高效、稳定的多线程程序至关重要。在实际开发中,需要结合具体场景灵活运用,确保程序的正确性和性能。

    Java并发编程学习笔记.rar

    这本"Java并发编程学习笔记"可能是作者在深入研究Java并发特性、工具和最佳实践过程中积累的心得体会。下面,我们将根据这个主题,探讨一些关键的Java并发编程知识点。 1. **线程与进程**:在多任务环境中,线程是...

    Java并发编程学习笔记

    Java并发编程是Java开发中必不可少的一部分,涉及到多线程、同步机制、线程池以及并发工具类等多个核心知识点。以下是对这些主题的详细说明: 1. **线程安全与锁 Synchronized 底层实现原理**: 线程安全是指在多...

    Java基础 学习笔记 Markdownr版

    本学习笔记主要涵盖了Java的基础知识,包括面向对象、集合、IO流、多线程、反射与动态代理以及Java 8的新特性等方面,旨在帮助初学者或有经验的开发者巩固和提升Java编程技能。 1. 面向对象(OOP):Java的核心是...

    Java并发体系学习思维笔记.rar

    Java并发体系学习思维笔记.rar

    Java并发编程学习笔记.

    Java并发编程是Java开发中的重要领域,它涉及到多线程、同步、锁机制、线程池等关键概念,是提高程序性能和效率的关键技术。在Java中,并发编程的运用可以充分利用多核处理器的能力,实现高效的多任务处理。以下是对...

    java并发编程学习笔记

    ### Java并发编程学习笔记知识点详解 #### 一、Java并发编程概述 Java并发编程是指在Java应用程序中同时执行多个操作的技术。它通过多线程、线程池等机制实现资源的有效利用,提高程序运行效率。Java并发编程的...

    Java并发学习笔记(二)——Synchronized关键字与ReetrantLock同步锁

    【Java并发学习笔记(二)——Synchronized关键字与ReentrantLock同步锁】 在Java多线程编程中,确保线程安全是非常重要的。Synchronized关键字和ReentrantLock是两种常见的同步机制,它们都用于保证线程的原子性、...

    java学习笔记markdown

    【Java学习笔记Markdown版】是针对Java初学者和进阶者的一份详尽教程,以Markdown格式编写,便于阅读和整理。Markdown是一种轻量级的标记语言,它允许用户使用易读易写的纯文本格式编写文档,然后转换成结构化的HTML...

    Java入门学习笔记

    这份"Java入门学习笔记"涵盖了imooc网站上Java入门课程的三个赛季的内容,旨在为初学者提供一个全面的学习资源。 笔记的第一部分是"Java入门第一季学习笔记",它可能包括Java的基础概念和语法。这部分可能会讲解...

    Java并发编程学习笔记 pdf 多线程编程

    Java并发编程学习笔记,研究JAVA并发多线程编程的一本教程,使用并发技术可以开发出并行算法,充分利用多处理器的计算能力,避免硬件资源浪费。目前,在JAVA并发编程方面的论述系统且内容详实的技术资料不太多,Java...

    java并发编程实践笔记

    ### Java并发编程实践笔记知识点详解 #### 一、保证线程安全的方法 1. **不要跨线程访问共享变量:** 当多个线程共享某个变量时,若其中一个线程修改了该变量,其他线程若没有正确同步,则可能读取到错误的数据。...

    Java学习笔记——良葛格

    "Java学习笔记——良葛格"是一份专为初学者设计的教程资料,由良葛格精心编写,旨在帮助读者掌握JDK5.0版本的Java基础知识。JDK(Java Development Kit)是Java开发的核心工具集,包含了编译器、调试器和运行环境等...

    Java并发编程与高并发解决方案-学习笔记-www.itmuch.com.pdf

    本文将基于文档《Java并发编程与高并发解决方案-学习笔记***.pdf》中提供的内容,来详细阐述并发编程和高并发的基本概念、CPU多级缓存与缓存一致性、以及Java内存模型。 ### 并发与高并发概念 在现代多线程编程中...

    Java开发学习笔记

    Java开发学习笔记主要针对的是初学者,旨在帮助他们掌握Java编程的基础知识。下面将详细讲解Java开发中的核心概念和步骤。 一、Java环境变量设置 在开始Java编程之前,我们需要安装Java Development Kit (JDK)并...

    Java并发实践-学习笔记

    这份"Java并发实践-学习笔记"涵盖了这个关键主题,旨在帮助开发者深入理解和掌握Java中的并发机制。以下是对这份笔记可能包含的一些核心知识点的详细阐述: 1. **Java并发基础**:首先,笔记可能会介绍Java并发的...

    JAVA学习笔记 林信良

    《JAVA学习笔记》是林信良先生的一部深入浅出的Java编程教程,旨在帮助初学者和有一定经验的开发者巩固和提升Java编程技能。这本书涵盖了Java语言的基础到高级概念,是一份宝贵的自学资料。 首先,从基础部分开始,...

    notes-learning-java-concurrency:java 并发学习笔记

    Java并发编程学习笔记 这是我两年前(2012-05)的学习笔记。。 -- 本文不会详细介绍java5以前的多线程开发的知识,而是重点介绍java5以来多线程开发的一些新变化。部分文字、代码都是摘抄、提炼过来的,大家有兴趣可...

Global site tag (gtag.js) - Google Analytics