随笔分类 - B =Java并发编程实战
并发编程实战
摘要:1.Condition简介 任何一个java对象都天然继承于Object类,在线程间实现通信的往往会应用到Object的几个方法,比如wait(),wait(long timeout),wait(long timeout, int nanos)与notify(),notifyAll()几个方法实现等
阅读全文
摘要:转自:https://www.cnblogs.com/takumicx/p/9402021.html 目录 1.前言 2.AbstractQueuedSynchronizer介绍 2.1 AQS是构建同步组件的基础 2.2 AQS的内部结构(ReentrantLock的语境下) 3 非公平模式加锁流
阅读全文
摘要:前言 本文描述Java线程线程状态及状态转换,不会涉及过多理论,主要以代码示例说明线程状态如何转换。 基础知识 1. 线程状态 Thread源码中的状态说明: 线程可以有6种状态: New(新建) Runnable(可运行) Blocked(被阻塞) Waiting(等待) Timed waitin
阅读全文
摘要:转自:http://www.importnew.com/27063.html 考查Java的并发编程时,手写“生产者-消费者模型”是一个经典问题。有如下几个考点: 对Java并发模型的理解 对Java并发编程接口的熟练程度 bug free coding style 本文主要归纳了4种写法,阅读后,
阅读全文
摘要:1.仍然先看构造方法:ThreadPoolExecutor构造方法 public ThreadPoolExecutor(int corePoolSize,int maximumPoolSize,long keepAliveTime,TimeUnit unit, BlockingQueue<Runna
阅读全文
摘要:1.ThreadPoolExecutor构造方法 public ThreadPoolExecutor(int corePoolSize,int maximumPoolSize,long keepAliveTime,TimeUnit unit, BlockingQueue<Runnable> work
阅读全文
摘要:在前面的文章中,我们使用线程的时候就去创建一个线程,这样实现起来非常简便,但是就会有一个问题: 如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程就会大大降低系统的效率,因为频繁创建线程和销毁线程需要时间。 那么有没有一种办法使得线程可以复用,就是执行完一个任务
阅读全文
摘要:1.新建Account类,使用AtomicLong定义账户余额,增加和减少金额方法使用getAndAdd方法。 2.Bank和Company类与https://www.cnblogs.com/xkzhangsanx/p/10759690.html一致。 3.测试类 4.测试结果 参考:java7并发
阅读全文
摘要:1.新建Account类,使用Semaphore同步增加和减少金额方法。 2.其他和https://www.cnblogs.com/xkzhangsanx/p/10759690.html一致。 注意释放信号量 3.测试结果 参考:java7并发编程实战手册 GitHub地址:https://gith
阅读全文
摘要:1.新建Account类,使用ReentrantLock同步增加和减少金额方法。 2.其他和https://www.cnblogs.com/xkzhangsanx/p/10759690.html一致。 注意释放锁 3.测试结果 Account start money:1000.000000Compa
阅读全文
摘要:1.新建Account类,使用synchronized同步增加和减少金额方法。 2.新建Company类,往账户增加金额,实现Runnable接口 3.新建Bank类,减少账户金额,实现Runnable接口 4.新建Main测试类,创建companyThread和bankThread,启动线程,打印
阅读全文