![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
多线程
不一样的程序员
纸上得来终觉浅,绝知此事要躬行
展开
-
多线程的应用(批量调用淘宝接口get图片)
多线程Callable原创 2017-09-12 16:25:26 · 1926 阅读 · 2 评论 -
理解线程池的原理
读完本文你将了解:什么是线程池线程池的处理流程保存待执行任务的阻塞队列创建自己的线程池JDK 提供的线程池及使用场景1.newFixedThreadPool2.newSingleThreadExecutor3.newCachedThreadPool4.newScheduledThreadP...转载 2018-03-06 11:33:56 · 3199 阅读 · 2 评论 -
几种Java线程池的实现算法分析
1. 前言在阅读研究线程池的源码之前,一直感觉线程池是一个框架中最高深的技术。研究后才发现,线程池的实现是如此精巧。本文从技术角度分析了线程池的本质原理和组成,同时分析了JDK、Jetty6、Jetty8、Tomcat的源码实现,对于想了解线程池本质、更好的使用线程池或者定制实现自己的线程池的业务场景具有一定指导意义。2. 使用线程池的意义...转载 2018-03-13 09:31:19 · 369 阅读 · 0 评论 -
java.nio.Buffer 中的 flip()方法
在Java NIO编程中,对缓冲区操作常常需要使用 java.nio.Buffer中的 flip()方法。 Buffer 中的 flip() 方法涉及到 Buffer 中的capacity、position、limit三个概念。 capacity:在读/写模...转载 2018-03-05 18:12:01 · 219 阅读 · 0 评论 -
什么时候使用 CountDownLatch
正如每个Java文档所描述的那样,CountDownLatch是一个同步工具类,它允许一个或多个线程一直等待,直到其他线程的操作执行完后再执行。在Java并发中,countdownlatch的概念是一个常见的面试题,所以一定要确保你很好的理解了它。在这篇文章中,我将会涉及到在Java并发编 程中跟CountDownLatch相关的以下几点:目录CountDownLatch是什么? ...转载 2018-03-05 18:05:13 · 339 阅读 · 0 评论 -
两个线程分别打印0-100的之间的奇偶数(两种方式对比)
业务描述前段时间遇到一个题目,关于两个线程分别打印0-100的之间的奇偶数,当时自己的写法是通过synchronized同步锁结合wait 和notify 的方式进行编写。主要逻辑的代码如下所示:package com.xyq.maventest.alibaba;import java.util.concurrent.CountDownLatch;/**** * 两个线程分别...原创 2018-03-11 15:56:16 · 10037 阅读 · 5 评论 -
Java 线程线程状态流程图
新建(new):新创建了一个线程对象。可运行(runnable):线程对象创建后,其他线程(比如main线程)调用了该对象的start()方法。该状态的线程位于可运行线程池中,等待被线程调度选中,获取cpu 的使用权 。运行(running):可运行状态(runnable)的线程获得了cpu 时间片(timeslice) ,执行程序代码。阻塞(block):阻塞状态是指线程因为某种...原创 2018-02-24 17:19:49 · 5553 阅读 · 0 评论 -
浅谈库存扣减相关问题
问题场景物品W现在库存剩余1个, 用户P1,P2同时购买.则只有1人能购买成功.(前提是不允许超卖)秒杀也是类似的情况, 只有1件商品,N个用户同时抢购,只有1人能抢到..这里不谈秒杀设计,不谈使用队列等使请求串行化,就谈下怎么用锁来保证数据正确.常见的实现方案有以下几种:1.代码同步, 例如使用 synchronized ,lock 等同步方法2.不查询,直接更新 ...转载 2018-02-27 14:40:13 · 1937 阅读 · 0 评论 -
JAVA多线程之线程间的通信方式
介绍本总结我对于JAVA多线程中线程之间的通信方式的理解,主要以代码结合文字的方式来讨论线程间的通信,故摘抄了书中的一些示例代码。线程间的通信方式①同步 这里讲的同步是指多个线程通过synchronized关键字这种方式来实现线程间的通信。参考示例:public class MyObject { synchronized public void methodA(原创 2018-02-02 14:30:46 · 343 阅读 · 0 评论 -
Java多线程共享变量控制
1. 可见性如果一个线程对共享变量值的修改,能够及时的被其他线程看到,叫做共享变量的可见性。如果一个变量同时在多个线程的工作内存中存在副本,那么这个变量就叫共享变量 2. JMM(java内存模型)多个线程同时对主内存的一个共享变量进行读取和修改时,首先会读取这个变量到自己的工作内存中成为一个副本,对这个副本进行改动之后,再更新回主内存中变量所在的地方。(由于CPU时间片是以线程为最小单位原创 2017-09-07 15:39:48 · 4281 阅读 · 0 评论 -
使用SPRING中的线程池ThreadPoolTaskExecutor实现JAVA并发
原理ThreadPoolTaskExecutor是一个spring的线程池技术,它是使用jdk中的java.util.concurrent.ThreadPoolExecutor进行实现。ThreadPoolTaskExecutor的参数: int corePoolSize: 线程池维护线程的最小数量. int maximumPoolSize:线程池维护线程的最大数量. ...原创 2018-05-07 18:34:49 · 1023 阅读 · 0 评论