sjyttkl的专栏

机器学习基本算法

排序:
默认
按更新时间
按访问量

JAVA多线程学习--哲学家就餐问题

哲学家就餐问题是1965年由Dijkstra提出的一种线程同步的问题。 问题描述:一圆桌前坐着5位哲学家,两个人中间有一只筷子,桌子中央有面条。哲学家思考问题,当饿了的时候拿起左右两只筷子吃饭,必须拿到两只筷子才能吃饭。上述问题会产生死锁的情况,当5个哲学家都拿起自己右手边的筷子,准备拿...

2017-07-29 20:46:17

阅读数:273

评论数:0

Java多线程系列----Fork/Join框架介绍

1. 什么是Fork/Join框架 Fork/Join框架是Java7提供了的一个用于并行执行任务的框架, 是一个把大任务分割成若干个小任务,最终汇总每个小任务结果后得到大任务结果的框架。 我们再通过Fork和Join这两个单词来理解下Fork/Join框架,Fork就是把一个大任务切分为若干...

2017-07-27 19:50:13

阅读数:216

评论数:0

Java多线程-----CopyOnWriteArrayList

概要 本章是"JUC系列"的CopyOnWriteArrayList篇。接下来,会先对CopyOnWriteArrayList进行基本介绍,然后再说明它的原理,接着通过代码去分析,最后通过示例更进一步的了解CopyOnWriteArrayList。内容包括: CopyO...

2017-07-27 19:39:23

阅读数:211

评论数:0

Java多线程----CopyOnWriteArraySet

概要 本章是JUC系列中的CopyOnWriteArraySet篇。接下来,会先对CopyOnWriteArraySet进行基本介绍,然后再说明它的原理,接着通过代码去分析,最后通过示例更进一步的了解CopyOnWriteArraySet。内容包括: CopyOnWriteArraySet介绍 ...

2017-07-27 19:32:15

阅读数:284

评论数:0

Copy-On-Write容器

ArrayList 是 非线程安全的, CopyOnWriteArrayList 是一个线程安全,并且在读操作时无锁的ArrayList,且适合并发访问。对于集合元素数为10000,线程数量为100的情况下进行性能测试,随着元素数量和线程数量的增加,CopyOnWriteArrayList在增加元...

2017-07-27 19:01:26

阅读数:227

评论数:0

线程池作用及Executors方法讲解

线程池的作用:      线程池作用就是限制系统中执行线程的数量。      根据系统的环境情况,可以自动或手动设置线程数量,达到运行的最佳效果;少了浪费了系统资源,多了造成系统拥挤效率不高。用线程池控制线程数量,其他线程 排队等候。一个任务执行完毕,再从队列的中取最前面的任务开始执行。若...

2017-07-27 18:59:57

阅读数:234

评论数:0

Java多线程系列-- 之 yield与join方法的区别

长期以来,多线程问题颇为受到面试官的青睐。虽然我个人认为我们当中很少有人能真正获得机会开发复杂的多线程应用(在过去的七年中,我得到了一个机会),但是理解多线程对增加你的信心很有用。之前,我讨论了一个wait()和sleep()方法区别的问题,这一次,我将会讨论join()和yield()方法的区别...

2017-07-27 16:54:51

阅读数:185

评论数:0

进程和线程的区别

线程是指进程内的一个执行单元,也是进程内的可调度实体。 与进程的区别: (1)地址空间:进程内的一个执行单元,进程至少一个线程,他们共享进程的地址空间,而进程有自己独立的地址空间 (2)资源拥有:进程是资源分配和拥有的单位,同一个进程内的线程共享进程资源 (3)线程是处理器调度的基本单位,...

2017-07-26 15:38:21

阅读数:119

评论数:0

CAP理论

CAP理论在互联网界有着广泛的知名度,知识稍微宽泛一点的工程师都会把其作为衡量系统设计的准则。大家都非常清楚地理解了CAP:任何分布式系统在可用性、一致性、分区容错性方面,不能兼得,最多只能得其二,因此,任何分布式系统的设计只是在三者中的不同取舍而已。 事实上,让人吃惊的是,CAP在国外的响...

2017-07-21 10:30:05

阅读数:147

评论数:0

Java四种线程池的使用

Java通过Executors提供四种线程池,分别为: newCachedThreadPool创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程。 newFixedThreadPool 创建一个定长线程池,可控制线程最大并发数,超出的线程会在队列中等待...

2017-07-20 20:12:04

阅读数:151

评论数:0

线程池和连接池的区别

一、 线程池的原理:      线程池,究竟是怎么一回事?其实线程池的原理很简单,类似于操作系统中的缓冲区的概念,它的流程如下: 先启动若干数量的线程,并让这些线程都处于睡眠状态,当客户端有一个新请求时,就会唤醒线程池中的某一个睡眠线程,让它来处理客户端的这个请求,当处理完这个请求后,...

2017-07-20 20:10:45

阅读数:3897

评论数:1

跳表(SkipList)及ConcurrentSkipListMap源码解析

二分查找和AVL树查找 二分查找要求元素可以随机访问,所以决定了需要把元素存储在连续内存。这样查找确实很快,但是插入和删除元素的时候,为了保证元素的有序性,就需要大量的移动元素了。 如果需要的是一个能够进行二分查找,又能快速添加和删除元素的数据结构,首先就是二叉查找树,二叉查找树在最坏情况下可...

2017-07-19 19:37:44

阅读数:136

评论数:0

深入剖析ConcurrentHashMap(2)

经过之前的铺垫,现在可以进入正题了。 我们关注的操作有:get,put,remove 这3个操作。 对于哈希表,Java中采用链表的方式来解决hash冲突的。 一个HashMap的数据结构看起来类似下图: 实现了同步的HashTable也是这样的结构,它的同步使用锁来保证的,并...

2017-07-19 19:15:10

阅读数:94

评论数:0

深入剖析ConcurrentHashMap(1)

原文是09年时写的,在公司的邮件列表发过,同事一粟 和清英 创建的并发编程网 对这方面概念和实战有更好的文章,贴出来仅供参考。pdf格式在:http://www.slideshare.net/hongjiang/concurrent-hashmap 可以获取 ConcurrentHashMap是...

2017-07-19 18:56:03

阅读数:156

评论数:0

ConcurrentLinkedQueue原理

1.    引言 在并发编程中我们有时候需要使用线程安全的队列。如果我们要实现一个线程安全的队列有两种实现方式一种是使用阻塞算法,另一种是使用非阻塞算法。使用阻塞算法的队列可以用一个锁(入队和出队用同一把锁)或两个锁(入队和出队用不同的锁)等方式来实现,而非阻塞的实现方式则可以使用循环CAS的方...

2017-07-19 17:53:54

阅读数:105

评论数:0

并发队列ConcurrentLinkedQueue和阻塞队列LinkedBlockingQueue用法

并发队列ConcurrentLinkedQueue和阻塞队列LinkedBlockingQueue用法 在Java多线程应用中,队列的使用率很高,多数生产消费模型的首选数据结构就是队列(先进先出)。Java提供的线程安全的Queue可以分为阻塞队列和非阻塞队列,其中阻塞队列的典型例子是Blo...

2017-07-19 17:33:54

阅读数:110

评论数:0

ArrayBlockingQueue

在《生产者消费者模型你知道多少》中简单的模拟了一个生产者消费者模型。有些网友对我的实现提出了很多质疑。我在文章的结尾也对抛出了一个问题:在添加的过程中可能出现数据丢失的情况,应该怎么处理?在代码中也充斥了大量的锁,有些锁是不需要的,而且有重复制造轮子的嫌疑。在今天我将引入ArrayBlocking...

2017-07-19 16:48:24

阅读数:131

评论数:0

Java多线程系列--Callable和Future

概要 本章介绍线程池中的Callable和Future。 Callable 和 Future 简介 示例和源码分析(基于JDK1.7.0_40) 转载请注明出处:http://www.cnblogs.com/skywang12345/p/3544116.html   Callable 和 ...

2017-07-19 09:17:46

阅读数:153

评论数:0

Java多线程系列--“JUC集合”01之 框架

概要 之前,在"Java 集合系列目录(Category)"中,讲解了Java集合包中的各个类。接下来,将展开对JUC包中的集合进行学习。在学习之前,先温习一下"Java集合包"。本章内容包括: Java集合包 JUC中的集合类 转载请注明出处:ht...

2017-07-19 09:17:15

阅读数:194

评论数:0

Java多线程系列-- 之 join()

概要 本章,会对Thread中join()方法进行介绍。涉及到的内容包括: 1. join()介绍 2. join()源码分析(基于JDK1.7.0_40) 3. join()示例 转载请注明出处:http://www.cnblogs.com/skywang12345/p/347...

2017-07-17 21:00:42

阅读数:97

评论数:0

提示
确定要删除当前文章?
取消 删除
关闭
关闭