Java高并发
文章平均质量分 84
rootlh;
普通开发者如果习惯于在架构师封装好的东西之上,只专注于做业务开发,那久而久之,在技术理解和成长上就会变得迟钝甚至麻木。
展开
-
MySQL主从复制
1.从linux到linux的主从复制:http://369369.blog.51cto.com/319630/790921/2.从windows(主)到linux(从)的主从复制:mysql主从配置,是在如下环境测试的: 主数据库所在的操作系统:win10 主数据库的版本:5.0 主数据库的ip地址:192.168.1.111原创 2017-10-01 12:40:38 · 193 阅读 · 0 评论 -
Java常用并发容器(concurrent包)
各种并发容器:Map HashTable HashMap ( Collections.synchronizedMap(Map map) ) ConcurrentHashMap ConcurrentSkipListMapList CopyOnWriteList 性能比较:需求:原创 2017-09-03 00:11:22 · 315 阅读 · 0 评论 -
(新思路)生产者消费者模型2(BlockingQueue的无锁解决方法)
通过阻塞队列来模拟生产者消费者模型,和synchronized(wait和notifyAll)、lock(condition)方法相比,效率更高,因为不需要人为加锁。LinkedBlockingQueue的实现方式(无界队列,可以装到内存满为止)1public class testLinkedBlockingQueue{2 //初始化阻塞队列容器(放产品)原创 2017-09-02 23:53:50 · 712 阅读 · 0 评论 -
买票系统模拟Java高并发(ConcurrentQueue的解决方案)
需求:对于买票系统,容器中放入1000张票,开启10个线程抢票。(1)很容易想到用加锁的办法解决线程并发问题下面使用synchronized关键字解决1public class SellTicket{2 static ListString> tickets = new LinkedListString>();//1.初始化票容器3 4原创 2017-09-02 22:14:51 · 4892 阅读 · 0 评论 -
(新思路)生产者消费者模型(condition的解决方法)
需求:一个固定容量的同步容器,拥有put和get方法,还有getCount方法能够支持两个生产者和10个消费者线程的阻塞调用使用wait和notify/notifyAll实现方法一:wait和notify的方法思考:1.第8行和第21行为什么用while不用if? 生产者1和生产者2判断满了---》wait---》消费者消费原创 2017-09-01 23:33:57 · 325 阅读 · 0 评论 -
Lock接口与读写锁(lock 和 synchronized 的比较)
出现:JDK1.5实现类:ReentrantReadWriteLock.ReadLock ReentrantReadWriteLock.WriteLock主要方法:lock() unlock()使用:TestLock.javapublic class TestLock implement Runnable{ ReentrantLoc原创 2017-08-10 15:31:48 · 934 阅读 · 0 评论 -
Fork and Join(Java并发编程的思路)
原文地址 作者:Julien Ponge 译者:iDestiny资源下载:Java SE 7Sample Code(Zip)如今,多核处理器在服务器,台式机及笔记本电脑上已经很普遍了,同时也被应用在更小的设备上,比如智能手机和平板电脑。这就开启了并发编程新的潜力,因为多个线程可以在多个内核上并发执行。在应用中要实现最大性能的一个重要技术手段是将密集的任务分隔成多转载 2017-09-01 00:12:59 · 369 阅读 · 0 评论 -
CyclicBarrier核心代码dowait()方法分析(底层实现机制)
引言: 相信大家对CyclicBarrier并不陌生,当一个线程调用了CyclicBarrier的await方法时,线程阻塞,直到指定数量的线程都执行完await方法后才唤醒所有线程。那么CyclicBarrier的代码底层是如何实现的呢?它和CountDownLatch有什么区别呢? 很显然,CyclicBarrier底层是使用ReentrantLock中的get原创 2017-09-24 23:32:57 · 1133 阅读 · 0 评论 -
Java线程池ThreadPoolExecutor的execute()原理
从线程提交任务的submit方法说起 众所周知,Java的线程池底层是使用工作队列+阻塞队列来实现的。当工作队列(workQueue)任务数大于线程池的最大线程数时,任务阻塞,被放入一个阻塞队列(blockingQueue)中。 那么,在任务提交到线程开始工作这段时间里发生了什么呢? 下面是submit方法的源码,对Runn原创 2017-09-22 22:46:10 · 1018 阅读 · 0 评论 -
Java线程池及其底层源码实现分析
相关类:ExecutorsExecutorServiceCallableThreadPoolFuture接口:ExecutorExecutor接口的使用:1public class TestExecutor implements Executor{2 @Override3 public void原创 2017-09-05 19:53:20 · 2059 阅读 · 0 评论 -
SQL优化、索引优化
一、发现哪些SQL语句有性能问题开启MySQL慢查询日志对SQL语句进行监控1 show variables like 'slow_query_log'; -- 查看是否开启慢查询日志2 set global slow_query_log = on; -- 开启慢查询日志3 set global log_queries_not_using_indexes原创 2017-08-21 09:16:14 · 298 阅读 · 0 评论 -
CAP理论
1.1 CAP理论简介CAP 分别为 consistency (强一致性)、availability (可用性) 和 partition tolerance (分区容错性)。理论核心: 在分布式系统中,一个分布式系统不可能同时很好的满足一致性、可用性和分区容错性这三个需求。因此,根据 CAP 原理将 NoSQL 数据库分成满足 CA 原则、满足 CP 原则和满足 AP 原则三大类:CA:单点...原创 2019-03-18 11:58:05 · 200 阅读 · 0 评论