开发&语言 - Java 并发编程 19
文章 发布于 2017年07月25日  阅读 4520
Google的三篇论文影响了很多很多人,也影响了很多很多系统。这三篇论文一直是分布式领域传阅的经典。根据MapReduce,于是我们有了Hadoop;根据GFS,于是我们有了HDFS;根据BigTable,于是我们有了HBase。而在这三篇论文里都提及Google的一个Lock Service —— Chubby,哦,于是我们有了Zookeeper。随着大数据的火热,Hxx们已经变得耳熟能详,现在...
作者 郑杭进  发布于 2017年07月24日  阅读 1406
作为一名程序员,相信大家在软件架构图上经常见到 “Nginx + Lua” 的字样,但是对于Lua在Web应用中的作用并没有多少了解。该篇文章对 Lua 的语言特性、优势等方面做介绍,并通过介绍一个天气预报的 Web 应用,让大家对 Lua 在Web应用中充当的角色有一个直观的认识。什么是 LuaLua 是用标准C语言编写的一种小巧的脚本语言,并以源代码形式开放。Lua 并没有提供强大的库,所以我...
文章 发布于 2017年07月21日  阅读 4320
现今互联网界,分布式系统和微服务架构盛行。一个简单操作,在服务端非常可能是由多个服务和数据库实例协同完成的。在一致性要求较高的场景下,多个独立操作之间的一致性问题显得格外棘手。基于水平扩容能力和成本考虑,传统的强一致的解决方案(e.g.单机事务)纷纷被抛弃。其理论依据就是响当当的CAP原理。往往为了可用性和分区容错性,忍痛放弃强一致支持,转而追求最终一致性。分布式系统的特性在分布式系统中,同时满足...
作者 王新栋  发布于 2017年07月17日  阅读 7072
一台Java服务器能跑多少个线程?这个问题来自一次线上报警如下图,超过了我们的配置阈值。图:京东自研UMP监控分析打出jstack文件,通过IBM Thread and Monitor Dump Analyzer for Java工具查看如下:图:IBM Thread and Monitor Dump Analyzer for Java共计1661个线程,和监控数据得出的吻合。但这个数量应该是大了...
文章 发布于 2017年06月26日  阅读 1164
什么是阻塞队列 BlockingQueue队列是一种数据结构,它的特点是先进先出(First In First Out),它有两个基本操作:在队列尾部加入一个元素,从队列头部移除一个元素。队列在多线程应用中,常用于生产-消费场景。BlockingQueue 是 Java util.concurrent 包下重要的数据结构,BlockingQueue 提供了线程安全的队列访问方式:当阻塞队列进行插入...
文章 发布于 2016年10月24日  阅读 1101
Semaphore为并发包中提供用于控制某资源同时可以被几个线程访问的类实例代码:// 允许2个线程同时访问final Semaphore semaphore = new Semaphore(2);ExecutorService executorService = Executors.newCachedThreadPool();for (int i = 0; i = 0;}Sync的nonfair...
文章 发布于 2016年10月04日  阅读 363
前言Java1.5后引入的Executor框架的最大优点是把任务的提交和执行解耦,只需把Task描述清楚,然后提交即可。至于这个Task是怎么被执行的,被谁执行的,什么时候执行的,就全部交给线程池管理。小案例废话不多说,先来一个小小案例。import java.util.concurrent.*;public class ExecutorTest { static ExecutorServi...
文章 发布于 2016年08月19日  阅读 341
前言并发是计算机发展的成就。(并发,同一时段发生;并行,同一时刻发生)我们知道,早期计算机只能串行的进行运行(最古老的打孔)。而经过多年的发展,计算机可以“同时”做很多事情。但悲剧的是,因为CPU速度和其它设备之间的速度差别太大,比如磁盘IO、网络传输、数据库访问等等,如果不希望CPU在进行这些操作时一直处于等待的状态,就要充分压榨它的性能让它干别的事情。目前在服务器端,衡量一个服务性能的高低好坏...
文章 发布于 2015年07月16日  阅读 994
Spring 中管理的 Bean 实例默认情况下是单例的(sigleton 类型),但 Spring 中的单例并不会影响应用的并发访问。E.g. 从客户端传递到后台 controller - Service - Dao 这一个流程中,它们这些对象都是单例的,那么这些单例的对象在传递实体 bean 时不会出问题么?由于实体 bean 不是单例的,并没有交给 Spring 来管理,每次都是手动的 Ne...
文章 发布于 2015年01月22日  阅读 293
线程共有6种状态;在某一时刻只能是这6种状态之一。这些状态由 Thread.State 这个枚举类型表示,并且可以通过 getState() 方法获得当前具体的状态类型。NEWThread myThread=new MyThread("myThread");MyThread 实例化之后但还没有执行 start(),这时线程的状态是 NEW。RUNNABLE可运行的线程状态。Thread myThr...
共19条记录 共2页 上一页 首页 1