JackChan

生活不止眼前的苟且,还有诗和远方!

Java并发编程-并发工具包java.util.concurrent使用指南

Java 5 添加了一个新的包到 Java 平台,java.util.concurrent 包。这个包包含有一系列能够让 Java 的并发编程变得更加简单轻松的类。在这个包被添加以前,你需要自己去动手实现自己的相关工具类。 本文我将带你一一认识 java.util.concurrent 包里的这...

2017-03-24 22:41:04

阅读数 10910

评论数 2

Java并发编程:volatile关键字解析

volatile这个关键字可能很多朋友都听说过,或许也都用过。在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果。在Java 5之后,volatile关键字才得以重获生机。volatile关键字虽然从字面上理解起来比较简单,但是要用好不是一件容易的事情。

2017-03-05 13:37:28

阅读数 467

评论数 0

Java高并发编程:使用JDK5中同步技术的3个面试题

第一题:现有的程序代码模拟产生了16个日志对象,并且需要运行16秒才能打印完这些日志,请在程序中增加4个线程去调用parseLog()方法来分头打印这16个日志对象,程序只需要运行4秒即可打印完这些日志对象。public class Test { public static vo...

2017-01-17 09:48:31

阅读数 1334

评论数 0

Java 程序死锁问题原理及解决方案

原文出处: IBM developerWorksJava 语言通过 synchronized 关键字来保证原子性,这是因为每一个 Object 都有一个隐含的锁,这个也称作监视器对象。在进入 synchronized 之前自动获取此内部锁,而一旦离开此方式,无论是完成或者中断都会自动释放锁。显然这...

2016-11-08 21:04:00

阅读数 9320

评论数 0

Java高并发编程:原子类

并发编程概念1. 原子性一个操作不能被再拆分了;即一个操作或者多个操作 要么全部执行并且执行的过程不会被任何因素打断,要么就都不执行。一个很经典的例子就是银行账户转账问题。 增量操作符++,不是原子的操作,它是先读取旧值,然后写回新值,包含2个操作2. 可见性可见性是指当多个线程访问同一个变量时...

2016-10-25 00:26:03

阅读数 3866

评论数 2

Java高并发编程:Callable、Future和FutureTask

Callable & Future用于获取线程执行完的结果1、Callable 接口类似于Runnable,两者都是为那些其实例可能被另一个线程执行的类设计的。但是 Runnable 不会返回结果,并且无法抛出经过检查的异常,而Callable返回结果并且可能抛出异常的任务。2、Futur...

2016-10-25 00:21:22

阅读数 714

评论数 0

Java高并发编程:HandlerThread

继承自Thread,在run()方法中,执行了Looper.prepare()和Looper.loop(),和handler结合使用,实现后台轮询线程功能

2016-10-24 21:09:53

阅读数 579

评论数 0

Java高并发编程:线程池

笔记摘要这里首先介绍了java5中的并发的小工具包:automatic,然后介绍了线程池的概念,对使用java5的方式创建不同形式的线程进行了演示,之后介绍了两个 对象:Callable和Future,用于获取线程执行后的结果,对于线程锁技术则在另外一篇文章中介绍。Java5中的线程并发库都在ja...

2016-10-24 20:43:24

阅读数 7759

评论数 1

Java高并发编程:线程范围内共享数据

笔记摘要所谓线程范围内共享数据,即对于相同的程序代码,多个模块在同一个线程中运行时要共享一份数据,而在另外线程中运行时又共享另外一份数据,API中为我们提供了一个操作线程范围内共享数据的类ThreadLocal,对于线程范围内共享数据的应用,在ThreadLocal的应用场景中进行了介绍,然后主要...

2016-10-24 20:32:11

阅读数 3240

评论数 0

Java高并发编程:定时器、互斥、同步通信技术

这里分析了多线程的一些细节问题,并介绍了传统定时器的创建,同时实现了根据自己的调度计划的自定义定时器,对于传统互斥技术中发现的内部类问题,进行了分析,最后对于同步通信技术,是重点,分析了如何处理类似的问题,如何设计能够更加清晰简单,体现了高内聚和程序的健壮性

2016-10-24 20:23:33

阅读数 2054

评论数 0

Java高并发编程:线程锁技术

这里介绍了java5中的线程锁技术:Lock和Condition,实现线程间的通信,其中的读锁和写锁的使用通过一个缓存系统进行了演示,对于Condition的应用通过 一个阻塞队列进行演示

2016-10-24 20:13:55

阅读数 4616

评论数 2

Java高并发编程:同步工具类

这里主要介绍了java5中线程锁技术以外的其他同步工具,首先介绍Semaphore:一个计数信号量。用于控制同时访问资源的线程个数,CyclicBarrier同步辅助类:从字面意思看是路障,这里用于线程之间的相互等待,到达某点后,继续向下执行。CountDownLatch同步辅助类:在完成一组正在...

2016-10-24 20:02:40

阅读数 3248

评论数 0

Java高并发编程:多个线程之间共享数据的方式探讨

多个线程之间共享数据,按照每个线程执行代码是否相同,我们可以采取不同的处理方式,这里通过简单的卖票示例说明了当每个线程执行相同代码的情况,对于多个线程执行不同代码的情况,处理方式比较灵活,这里主要介绍了2种方式,通过2种方式的对比和归纳,我们可以总结出在多个线程执行不同的代码情况下,如何进行代码的...

2016-10-24 19:40:05

阅读数 686

评论数 0

集合及concurrent并发包总结

1. 集合包集合包最常用的有Collection和Map两个接口的实现类,Colleciton用于存放多个单对象,Map用于存放Key-Value形式的键值对。Collection中最常用的又分为两种类型的接口:List和Set,两者最明显的差别为List支持放入重复的元素,而Set不支持。Lis...

2016-10-04 01:08:27

阅读数 5618

评论数 1

Java中的synchronized与volatile关键字

Java中的”synchronized”与”volatile”关键字“synchronized”关键字提供了Java一种内置的锁机制。每一个对象都有一个相对应的“monitor”,这个监听器可以提供互斥的访问

2016-09-25 09:34:32

阅读数 564

评论数 0

提示
确定要删除当前文章?
取消 删除
关闭
关闭