随笔- 298  文章- 4  评论- 35  阅读- 96万 

随笔分类 -  Java多线程

Netty完成网络通信(二)
摘要:Netty是基于NIO的框架,完善了NIO的一些缺陷,因此可以用Netty替代NIO Netty实现通信步骤: 1、创建两个NIO线程组,一个专门用于网络事件处理(接受客户端的连接),另一个则进行网络通信读写。 2、创建一个ServerBootstrap对象,配置Netty的一系列参数,例如接受传出 阅读全文
posted @ 2018-08-16 16:17 布鲁布鲁sky 阅读(245) 评论(0) 推荐(0) 编辑
Java并发编程_wait/notify和CountDownLatch的比较(三)
摘要:1、wait/notify方法 输出结果: 代码解读: 第一步:执行t2线程,进入run方法,list.size不等于5,就lock.wait释放锁,t2进程等待,转而执行t1 第二步:执行t1进程,得到锁,执行for循环,当list.size等于5时,发出通知..唤醒t2进程,但是会继续执行完fo 阅读全文
posted @ 2018-05-22 22:37 布鲁布鲁sky 阅读(449) 评论(0) 推荐(0) 编辑
Java并发编程_volatile关键字的用法(二)
摘要:被volatile修饰的变量能够保证每个线程能够获取该变量的最新值,从而避免出现数据脏读的现象。 根据下面实例理解: 不加volatile输出结果: 可以看到,线程没有停止,还在run()方法里一直循环, 我们在main方法里设置了全局变量isRunning为false,线程执行run方法时没有生效 阅读全文
posted @ 2018-05-19 22:22 布鲁布鲁sky 阅读(160) 评论(0) 推荐(0) 编辑
Java并发编程_synchronized关键字的用法(一)
摘要:synchronized:意思是 同步,也就是 共享资源 Synchronized修饰方法:对象锁 Static Synchronized修饰方法:类锁 下面代码手动敲一遍,就会理解 一、Synchronized修饰方法 1、一个对象,启动多个线程,竞争一把对象锁 输出结果: 这五个线程,哪个先执行 阅读全文
posted @ 2018-05-19 12:54 布鲁布鲁sky 阅读(187) 评论(0) 推荐(0) 编辑
ThreadPoolExecutor运转机制详解
摘要:ThreadPoolExecutor机制 一、概述 1、ThreadPoolExecutor作为java.util.concurrent包对外提供基础实现,以内部线程池的形式对外提供管理任务执行,线程调度,线程池管理等等服务; 2、Executors方法提供的线程服务,都是通过参数设置来实现不同的线 阅读全文
posted @ 2017-07-26 09:34 布鲁布鲁sky 阅读(196) 评论(0) 推荐(0) 编辑
ReentrantReadWriteLock——写写互斥(二)
摘要:"读写" 、"写读"、"写写"都是同步的、互斥的 1、Service.java 可以发现,lock.writeLock()的效果就是同一时间只允许一个线程执行lock()方法后面的代码 2、ThreadA.java 3、ThreadB.java 4、Run.java 可以自己更改ThreadA和Th 阅读全文
posted @ 2017-07-26 08:57 布鲁布鲁sky 阅读(237) 评论(0) 推荐(0) 编辑
ReentrantReadWriteLock——读读共享(一)
摘要:多个线程可以同时读,读读是异步的、非互斥的 1、Service.java(封装的方法,供线程A和B访问) 2、ThreadA.java(线程A) 3、ThreadB.java(线程B) 4、Run.java(运行类) 阅读全文
posted @ 2017-07-25 17:22 布鲁布鲁sky 阅读(160) 评论(0) 推荐(0) 编辑
使用Condition配合await()和signal()实现等待/通知
摘要:关键字Synchronized与wait()和notify()/notifyAll()结合可以实现“等待/通知”模式, Lock类的子类ReentrantLock也可以实现同样的功能,但需要借助Condition对象。 优势:在一个Lock对象里面可以创建多个Condition(即对象监视器)实例, 阅读全文
posted @ 2017-07-25 16:35 布鲁布鲁sky 阅读(2011) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示