
多线程
nwpu_geeker
向大牛学习!
展开
-
AtomicInteger源码分析——基于CAS的乐观锁实现
1 悲观锁与乐观锁我们都知道,cpu是时分复用的,也就是把cpu的时间片,分配给不同的thread/process轮流执行,时间片与时间片之间,需要进行cpu切换,也就是会发生进程的切换。切换涉及到清空寄存器,缓存数据。然后重新加载新的thread所需数据。当一个线程被挂起时,加入到阻塞队列,在一定的时间或条件下,在通过notify(),notifyAll()唤醒回来。在某个资源不可用的时候,就将c转载 2018-03-28 17:29:22 · 800 阅读 · 0 评论 -
线程池中的线程为什么不会释放而是循环等待任务呢
线程池 之前一直有这个疑问:我们平时使用线程都是各种new Thread(),然后直接在run()方法里面执行我们要做的各种操作,使用完后需要做什么管理吗?线程池为什么能维持住核心线程不释放,一直接收任务进行处理呢?线程 线程无他,主要有两个方法,我们先看看start()方法介绍:...转载 2018-07-25 23:35:05 · 5552 阅读 · 0 评论 -
分析ReentrantLock的实现原理
Java并发编程源码分析系列:分析Java线程池的创建分析Java线程池执行原理分析Java线程池Callable任务执行原理前几篇文章分析了线程池的原理,接下来研究锁的方面。显式锁ReentrantLock和同步工具类的实现基础都是AQS,所以合起来一齐研究。什么是AQSAQS即是AbstractQueuedSynchronizer,一个用来...转载 2018-07-06 10:53:18 · 252 阅读 · 0 评论 -
什么是可重入锁
可重入锁,也叫做递归锁,指的是同一线程外层函数获得锁之后,内层递归函数仍然有获取该锁的代码,但不受影响。本文里面讲的是广义上的可重入锁,而不是单指JAVA下的ReentrantLock。可重入锁,也叫做递归锁,指的是同一线程 外层函数获得锁之后 ,内层递归函数仍然有获取该锁的代码,但不受影响。...转载 2018-07-06 10:19:00 · 1551 阅读 · 0 评论 -
Java多线程-线程池ThreadPoolExecutor的submit返回值Future
起原文地址 http://blog.youkuaiyun.com/qq_25806863/article/details/71214033一般使用线程池执行任务都是调用的execute方法,这个方法定义在Executor接口中:public interface Executor { void execute(...转载 2018-07-05 23:10:45 · 2417 阅读 · 0 评论 -
Java并发控制:ReentrantLock Condition使用详解
Java并发控制:ReentrantLock Condition使用详解 生产者-消费者(producer-consumer)问题,也称作有界缓冲区(bounded-buffer)问题,两个进程共享一个公共的固定大小的缓冲区。其中一个是生产者,用于将...转载 2018-07-05 22:04:55 · 247 阅读 · 0 评论 -
LinkedBlockingDeque源码分析
LinkedBlockingDeque是一个基于链表的双端阻塞队列。和LinkedBlockingQueue类似,区别在于该类实现了Deque接口,而LinkedBlockingQueue实现了Queue接口。该类的继承关系如下图: 本文将与LinkedBlockingQueue进行比较,关于LinkedBloc...转载 2018-07-05 21:35:16 · 309 阅读 · 0 评论 -
Lock锁和Condition条件
浅谈Synchronized: synchronized是Java的一个关键字,也就是Java语言内置的特性,如果一个代码块被synchronized修饰了,当一个线程获取了对应的锁,执行代码块时,其他线程便只能一直等待,等待获取锁的线程释放锁,而获取锁的线程释放锁会有三种情况: 1).获取锁的线程执行完该代码块,然后线程释放对锁的占有; 2).线程执行发生...转载 2018-07-05 17:44:39 · 365 阅读 · 0 评论 -
ThreadLocal类的源码分析与应用场景
前言在实习的过程中项目有用到TreadLocal类,主要就是在日志控制中,通过一个bean->RequestLog自定义类来保存request请求的参数,然后在控制台中打印这些请求参数。在封装请求的参数bean中可以维护一个静态的TreadLocal对象,将每一次请求也就是不同的线程维护自己线程内的一个requestLog实例对象,封装不同的request对象中的请求参数,然后在控制台打...原创 2018-05-18 17:45:06 · 387 阅读 · 0 评论 -
java线程之间的通信方式
引言当多个线程需要协作来完成一件事情的时候,如何去等待其他线程执行,又如何当线程执行完去通知其他线程结束等待。线程与进程的区别进程可以独立运行,它是系统进行资源分配和调度的独立单位。 线程是进程的一个实体,是CPU调度和分派的基本单位,比进程更小的独立单位,它基本上不拥有系统资源。 他们之间的联系: 一个线程属于一个进程,而一个进程有多个线程,多个线程共享该进程的所有资源。 ...原创 2018-07-26 14:49:52 · 620 阅读 · 0 评论