所谓的高并发除了在架构上的高屋建瓴,还得需要开发人员在具体业务开发中注重自己的每一行代码.每一个细节,面子有的同时,更重要的还是要有里子. 面对性能,我们一定要有自己的工匠精神,不可以对任何一行代码妥协! 今天和大家分享在业务开发中如何降低接口响应时间的一个小技巧,也是大家日常开发中比较普遍存在的一个问题,即如何提高程序的并行计算能力? 本文主要包含以下内容: 顺序执行很慢 线程池+Future并行计算 使用Java8的CompletableFuture 使用Guava的ListenableFu…
1:公司里有多个业务系统,需要进行统一重构,有PHP的.有Java的.有.NET的,甚至还有delphi的. 2:公司里有多个数据库系统,有mysql的.有sqlserver的.还有oracel的,甚至还有access的. 3:系统多了,需要进行统一管理维护,集成单点登录,集中授权管理. 4:其实很多时候想遇到一个公司用很多开发语言的环境也是有难度的,因为一个公司走一个重点开发语言就可以了,多了顾得来东顾不来西. //---------------------------------------…
1.经典问题,火车站售票,公共票源箱,多个窗口同时取箱中车票销售 package com.lfy.ThreadsSynchronize; /** * 解决办法分析:即我们不能同时让超过两个以上的线程进入到 if(num>0)的代码块中 * 1.使用 同步代码块 2.使用 同步方法 3.使用 锁机制 */ public class TicketSell1 extends Thread{ //定义一共有 50 张票,注意声明为 static,表示几个窗口共享 private static int n…
4.对继承自Runnable的线程进行锁机制的使用 package com.lfy.ThreadsSynchronize; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; public class TicketSellSolution4 implements Runnable { private static int num = 50; //创建一个锁对象 Lock…
3.使用锁机制lock,unlock package com.lfy.ThreadsSynchronize; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; /** * 1.使用锁机制 * 语法:lock(),unlock() */ public class TicketSellSolution3 extends Thread{ private static int…
1.第一种解决办法:同步代码块,关键字synchronized package com.lfy.ThreadsSynchronize; /** * 1.使用同步代码块 * 语法: synchronized (同步锁) { //需要同步操作的代码 } 同步锁:为了保证每个线程都能正常的执行原子操作,Java 线程引进了同步机制:同步锁也叫同步监听对象.同步监听器.互斥锁: Java程序运行使用的任何对象都可以作为同步监听对象,但是一般我们把当前并发访问的共同资源作为同步监听对象 注意:同步锁一定要…
5.测试 package com.lfy.ThreadsSynchronize; public class Test { public static void main(String[] args) { //创建 3 个窗口 // TicketSell1 t1 = new TicketSell1("A窗口"); // TicketSell1 t2 = new TicketSell1("B窗口"); // TicketSell1 t3 = new TicketSell…
2.使用方法同步 package com.lfy.ThreadsSynchronize; /** * 1.使用同步方法 * 语法:即用 synchronized 关键字修饰方法(注意是在1个对象中用锁还是多个对象之间用锁,1个对象级用锁,只能是同一个对象,多个对象之间用锁,只能使用类锁,方法还需要添加static修饰) 注意:不能直接用 synchronized 来修饰 run() 方法,因为如果这样做,那么就会总是第一个线程进入其中,而这个线程执行完所有操作,即卖完所有票了才会出来. */ p…
本文由本人首次发布在infoq中文站上:http://www.infoq.com/cn/articles/java-multithreaded-programming-mode-immutable-object.转载请注明作者: 黄文海 出处:http://viscent.iteye.com. 多线程共享变量的情况下,为了保证数据一致性,往往需要对这些变量的访问进行加锁.而锁本身又会带来一些问题和开销.Immutable Object模式使得我们可以在不使用锁的情况下,既保证共享变量访问的线程安…
简介 Condition中的await()方法相当于Object的wait()方法,Condition中的signal()方法相当于Object的notify()方法,Condition中的signalAll()相当于Object的notifyAll()方法. 不同的是,Object中的wait(),notify(),notifyAll()方法是和"同步锁"(synchronized关键字)捆绑使用的:而Condition是需要与"互斥锁"/"共享锁&qu…