--14.3.并发
文章平均质量分 73
leoIsCoding
Github : [ https://github.com/leoChaoGlut ]
Email : [ leoIsCoding@163.com ]
展开
-
线程池线程数与(CPU密集型任务和I/O密集型任务)的关系
近期看了一些JVM和并发编程的知识,来做一个关于(线程池线程数与(CPU密集型任务和I/O密集型任务)的关系)的总结:1.任务类型举例:1.1: CPU密集型:例如,一般我们系统的静态资源,比如js,css等,会存在一个版本号,如 main.js?v0,每当用户访问这个资源的时候,会发送一个比对请求到服务端,比对本地静态文件版本和服务端的文件版本是否一致,不一致则更新.这种任务一般不占原创 2016-02-21 00:39:05 · 11391 阅读 · 1 评论 -
线程池ThreadPoolExecutor参数设置
JDK1.5中引入了强大的concurrent包,其中最常用的莫过了线程池的实现ThreadPoolExecutor,它给我们带来了极大的方便,但同时,对于该线程池不恰当的设置也可能使其效率并不能达到预期的效果,甚至仅相当于或低于单线程的效率。ThreadPoolExecutor类可设置的参数主要有:corePoolSize核心线程数,核心线程会一直存活转载 2016-12-10 09:15:12 · 386 阅读 · 0 评论 -
IO型任务,线程池越大越好?
网传 "CPU密集型任务,线程池size应为CPU数+1; IO密集型任务,线程池size应为CPU数/(1-阻塞系数)".并且,类似的话也出现在 这本书里.但是,今天正好做到一个类似的东西,于是乎就测试了一下,很奇怪,结果恰恰相反.1.环境:1.1.jdk1.81.2.mysql5.6 (数据库位于本地Ubuntu16.04虚拟机中)1.3.win10 64bi原创 2016-12-12 00:04:49 · 3835 阅读 · 1 评论 -
缓存穿透、缓存并发、缓存失效之思路变迁
我们在用缓存的时候,不管是Redis或者Memcached,基本上会通用遇到以下三个问题:缓存穿透缓存并发缓存失效一、缓存穿透注:上面三个图会有什么问题呢?我们在项目中使用缓存通常都是先检查缓存中是否存在,如果存在直接返回缓存内容,如果不存在就直接查询数据库然后再缓存查询结果返回。这个时候如果我们查询的某一个数据在缓存中一直不存在,就会造转载 2016-06-29 09:51:32 · 1174 阅读 · 0 评论 -
Java并发编程:volatile关键字解析(推荐!)
volatile这个关键字可能很多朋友都听说过,或许也都用过。在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果。在Java 5之后,volatile关键字才得以重获生机。 volatile关键字虽然从字面上理解起来比较简单,但是要用好不是一件容易的事情。由于volatile关键字是与Java的内存模型有关的,因此在讲述volatile关键之前,我们转载 2016-07-06 17:49:12 · 1192 阅读 · 0 评论 -
实战SoftReference被回收的时机
这是我最近在开发的一个基于客户端发现模式(因为基于服务端发现的都比较多了,consul还做得很好)的服务注册发现框架: https://github.com/leoChaoGlut/ServiceDIscoveryAndRegistry然后在过程中遇到这样一个问题:在做client-service-proxy的时候,要实现一个负载均衡算法.我选了比较常用的原创 2016-08-10 00:18:06 · 2840 阅读 · 0 评论 -
一道面试题比较synchronized和读写锁
一、科普定义这篇博文的两个主角“synchronized”和“读写锁”1)synchronized这个同步关键字相信大家都用得比较多,在上一篇“多个线程之间共享数据的方式”中也详细列举他的应用,在这就不多说只做几点归纳:Java提供这个关键字,为防止资源冲突提供的内置支持。当任务执行到被synchronized保护的代码片段的时候,它检查锁是否可用,然后获取锁,执行转载 2016-07-31 21:56:50 · 786 阅读 · 0 评论 -
Java细粒度锁实现的3种方式
最近在工作上碰见了一些高并发的场景需要加锁来保证业务逻辑的正确性,并且要求加锁后性能不能受到太大的影响。初步的想法是通过数据的时间戳,id等关键字来加锁,从而保证不同类型数据处理的并发性。而java自身api提供的锁粒度太大,很难同时满足这些需求,于是自己动手写了几个简单的扩展…1. 分段锁借鉴concurrentHashMap的分段思想,先生成一定数量的锁,具体使用的时候转载 2016-06-28 14:06:14 · 1663 阅读 · 0 评论 -
Netty学习
1.Dependency: io.netty netty-all 4.1.0.CR7 2.单服务器,多客户端例子:2.1.创建一个消息处理的Handler,它继承ChannelInboundHandlerAdapterpackage leo.test;import io.netty.buffer.ByteBuf;import io.netty.cha原创 2016-04-26 09:35:05 · 1573 阅读 · 0 评论 -
100万并发连接服务器笔记之Java Netty处理1M连接会怎么样
转载:http://www.blogjava.net/yongboy/archive/2013/05/13/399203.html前言每一种该语言在某些极限情况下的表现一般都不太一样,那么我常用的Java语言,在达到100万个并发连接情况下,会怎么样呢,有些好奇,更有些期盼。这次使用经常使用的顺手的netty NIO框架(netty-3.6.5.Final),封装的很好,接口很转载 2016-04-12 00:14:28 · 2098 阅读 · 0 评论 -
Java 8并发工具包漫游指南
Java 8并发工具包由3个包组成,分别是java.util.concurrent、java.util.concurrent.atomic和java.util.concurrent.locks,提供了大量关于并发的接口、类、原子操作类、锁相关类。借助java.util.concurrent包,可以非常轻松地实现复杂的并发操作。java.util.concurrent包主要包含以下内容,后文将具体介转载 2017-04-18 00:00:43 · 560 阅读 · 0 评论