随笔分类 -  JUC

java.util.current,Java多线程
摘要:package com.java.juc; /** * 题目:判断打印 "one" or "two" * * 1.两个普通同步方法,两个线程 ,标准打印,打印?// one two * 2.新增Thread.sleep(3000) 给getOne() 打印? // 3s 后打印 one two * 阅读全文
posted @ 2017-02-19 23:05 chunfulandu 阅读(559) 评论(0) 推荐(0)
摘要:ReadWriteLock维护了一对锁,读锁可允许多个读线程并发使用,写锁是独占的。 下面通过一个简单的例子来了解ReadWriteLock。 阅读全文
posted @ 2017-02-19 22:43 chunfulandu 阅读(1920) 评论(0) 推荐(0)
摘要:Condition Condition接口描述了可能会与锁有关联的条件变量。这些变量在用法与使用Object.wait访问的隐式监视器类似,但提供了更强大的功能。需要特别指出的是,单个Lock可能与多个Condition对象关联。为了避免兼容性问题,Condition方法的名称与对应的Object版 阅读全文
posted @ 2017-02-19 03:08 chunfulandu 阅读(998) 评论(0) 推荐(0)
摘要:首先引入下面这段生产者和消费者的程序,店员类作为生产产品和消费产品的中介,其中的数据product为共享数据,产品最多只能囤积5个,当产品达到5个还在生产时,就会提示“产品已满!”,类似地,如果产品只有0个了还在消费,会提示“缺货!”: 运行程序,结果如下: 这是一种不好的情况,因为当产品已满时,还 阅读全文
posted @ 2017-02-19 02:29 chunfulandu 阅读(637) 评论(0) 推荐(0)
摘要:Fork/Join框架介绍 下面使用该框架计算0-50000000000的和,并比较普通计算方法、Fork/Join框架、Java8新特性三种计算方式的计算时间: 转载自:http://blog.csdn.net/xiangwanpeng/article/details/54977709 阅读全文
posted @ 2017-02-19 01:36 chunfulandu 阅读(259) 评论(0) 推荐(0)
摘要:jdk1.7中java.util.concurrent.Executor线程池体系介绍 java.util.concurrent.Executor : 负责线程的使用与调度的根接口 |–ExecutorService:Executor的子接口,线程池的主要接口 |–ThreadPoolExecuto 阅读全文
posted @ 2017-02-19 01:22 chunfulandu 阅读(5328) 评论(1) 推荐(3)
摘要:用于解决多线程安全问题有三种方式: 同步代码块(隐式锁,基于JVM) 同步方法(隐式锁,基于JVM) 同步锁(显式锁,jdk1.5后出现,相对于前两种方式,更加灵活) 下面通过一段程序来说明一下同步锁的简单使用。 阅读全文
posted @ 2017-02-14 01:54 chunfulandu 阅读(297) 评论(0) 推荐(0)
摘要:创建执行线程有四种方式: 实现implements接口创建线程 继承Thread类创建线程 实现Callable接口,通过FutureTask包装器来创建线程 使用线程池创建线程 下面介绍通过实现Callable接口来创建线程。 阅读全文
posted @ 2017-02-14 01:37 chunfulandu 阅读(7243) 评论(1) 推荐(0)
摘要:CountDownLatch是一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待。 闭锁可以延迟线程的进度直到其到达终止状态,闭锁可以用来确保某些活动直到其他活动都完成才继续执行: 确保某个计算在其需要的所有资源都被初始化之后才继续执行; 确保某个服务在其依赖的所有 阅读全文
posted @ 2017-02-14 01:17 chunfulandu 阅读(288) 评论(0) 推荐(0)
摘要:ConcurrentHashMap Java5在java.util.concurrent包中提供了多种并发容器类来改进同步容器的性能。其中应用最为广泛的为ConcurrentHashMap,ConcurrentHashMap是一个线程安全的hash表。对于多线程的操作,介于HashMap和HashT 阅读全文
posted @ 2017-02-14 00:28 chunfulandu 阅读(1727) 评论(0) 推荐(0)
摘要:原子变量 为了引出原子变量这个概念,我们先看一个例子。 程序运行结果如下: 从程序运行结果可以看出,Thread-4和Thread-6执行结果都为2,明显发生了线程安全问题,当然,这种情况是偶然的。那么,出现这种问题的原因是什么呢? 如果你对j = i++;底层是如果实现的,那么这个问题就好理解了。 阅读全文
posted @ 2017-02-13 03:26 chunfulandu 阅读(1415) 评论(0) 推荐(0)
摘要:前言 首先,我们使用多线程的目的在于提高程序的效率,但是如果使用不当,不仅不能提高效率,反而会使程序的性能更低,因为多线程涉及到线程之间的调度、CPU上下文的切换以及包括线程的创建、销毁和同步等等,开销比单线程大,因此需谨慎使用多线程。 在jdk1.5以后,提供了一个强大的java.util.con 阅读全文
posted @ 2017-02-13 02:08 chunfulandu 阅读(4978) 评论(0) 推荐(1)