多线程
琅琊山二当家
这个作者很懒,什么都没留下…
展开
-
java并行的执行两个任务
java并行的执行两个任务 ,每个任务又包含多个小任务,下面是一种代码实践的成果 ExecutorService executor1 = Executors.newSingleThreadExecutor(); Map<String, Integer> tenantIdNumMap = new HashMap<>(); FutureTask<Map<String, Integer>> future1 =原创 2021-07-23 18:07:52 · 1334 阅读 · 1 评论 -
Bug: Return value of putIfAbsent is ignored, but list is reused
这个错误是findbugs插件找出来的问题.代码首先是这样的 public static List<InvoiceDTO> getKeyInvoiceOpeningResList( String key) { List<InvoiceDTO> list = invoiceOpeningListMap.get(key); ...原创 2018-06-04 17:35:58 · 2076 阅读 · 0 评论 -
为什么ConcurrentHashMap是弱一致的
转载 :http://ifeve.com/concurrenthashmap-weakly-consistent/本文将用到Java内存模型的happens-before偏序关系(下文将简称为hb)以及ConcurrentHashMap的底层模型相关的知识。happens-before相关内容参见:JLS §17.4.5. Happens-before Order、深入理解Java内存模型以及Ha...转载 2018-05-30 14:14:12 · 432 阅读 · 0 评论 -
Java乐观锁悲观锁、synchronized,重入锁 (ReentrantLock)处理并发(互斥同步、非互斥同步)
转载:https://blog.csdn.net/ydk888888/article/details/78625333乐观锁和悲观锁首先我们理解下两种不同思路的锁,乐观锁和悲观锁。这两种锁机制,是在多用户环境并发控制的两种所机制。下面看百度百科对乐观锁和悲观锁两种锁机制的定义:乐观锁( Optimistic Locking ) 相对悲观锁而言,乐观锁机制采取了更加宽松的加锁机制。悲观锁大多数情况下...转载 2018-07-09 09:44:03 · 1527 阅读 · 0 评论 -
JVM线程状态,park, wait, sleep, interrupt, yeild 对比
转载:https://www.cnblogs.com/23lalala/p/6214356.htmlJVM线程状态NEW, RUNNABLE, BLOCKED, WAITING, TIMED_WAITING, TERMINATEDBLOCKED是等待获得对象锁WAITING是调用了wait, sleep, park 操作系统线程状态 sleep, 进入TIMED_WAITING状态,不出让锁wai...转载 2018-06-27 14:09:26 · 3317 阅读 · 0 评论 -
java.lang.Thread.State:WAITING(parking)
LockSupport的park和unpark的基本使用,以及对线程中断的响应性https://blog.csdn.net/aitangyong/article/details/38373137转载:https://www.cnblogs.com/xuwangs/p/8251728.html闲话少说,Tomcat日志报错及堆栈信息: 因为这个问题,挂了几个节点。跟踪报错的代码发现代码中用到futu...转载 2018-06-27 14:25:56 · 16894 阅读 · 0 评论 -
Java 里如何实现线程间通信
原文出处: wingjay正常情况下,每个子线程完成各自的任务就可以结束了。不过有的时候,我们希望多个线程协同工作来完成某个任务,这时就涉及到了线程间通信了。本文涉及到的知识点:thread.join(), object.wait(), object.notify(), CountdownLatch, CyclicBarrier, FutureTask, Callable 等。本文涉及...转载 2018-11-30 09:42:36 · 208 阅读 · 0 评论 -
java两个线程交替打印1212 或者完成各自的工作
一个朋友公司经常出的面试题前段练手写的/** * 两个线程交替打印 1 2 1 2 .。。。 * @version * @author flyer 2018年11月13日下午4:38:05 * @since 1.8 */public class TestThreadPrint { // Lock lock = new ReentrantLock(...原创 2018-12-19 09:29:21 · 802 阅读 · 0 评论 -
从CompletableFuture到异步编程设计
转载:https://www.cnblogs.com/xiangnanl/p/9939447.html从CompletableFuture到异步编程设计,笔者就分为2部分来分享CompletableFuture异步编程设计,前半部分总结下CompletableFuture使用实践,后半部分分享下CompletableFuture实现原理和异步编程设计机制。(ps:本文内容较多,请耐...转载 2019-06-18 18:14:03 · 246 阅读 · 0 评论 -
CompletableFuture parallelStream并行流使用的一个注意事项
并行流 就是多线程 使用的威力大,出问题的概率也大,使用时候要谨慎,一旦出问题,相对来说不好排查错误这里就说一个遇到的问题: 不要再每个并行流分别计算,这个流处理需要的公共变量,可以在外部计算好,传进去。修改前:上图函数具体实现修改后:类似的一个修改最后给出具体获取List<String> catServiceNa...原创 2019-06-26 15:47:14 · 1268 阅读 · 0 评论 -
如何分析Thread Dump(收集)--Thread Dump可以解决的问题
转载:https://www.cnblogs.com/kongzhongqijing/articles/4152072.html jstack pid 可以打出来 thread dump info 当Java Web程序运行变慢,或者发生故障时,需要使用Thread Dumps。分析Java中的线程,线程如何创建的,如何管理线程,怎么从运行中的程序中dump 线程,最后怎么分析他们得到阻塞和存...转载 2018-05-28 16:29:56 · 4156 阅读 · 0 评论 -
Java多线程Future task的使用
处理批量任务 :本文转载地址 : http://blog.csdn.net/u010963948/article/details/54669708先直接上代码如下:一、需要实现Callable接口(可以使用泛型)[java] view plain copypackage com.innotek.spms.service.finance; import com.innotek.common.u...转载 2018-03-14 16:22:28 · 2295 阅读 · 0 评论 -
java CountDownLatch很简单的使用例子
public CountDownLatch(int count); public void countDown(); public void await() throws InterruptedException 构造方法参数指定了计数的次数countDown方法,当前线程调用此方法,则计数减一awaint方法,调用此方法会一直阻塞当前线程,直到计时器的转载 2016-05-20 15:24:04 · 586 阅读 · 0 评论 -
volatile与AtomicIntegerfieldupdater 区别与关系
volatile 实现了多线程的可见性,用于多线程对某个变量的修改 比如bool 值的变化,别的线程立即看到,可以退出循环之类的后续操作但是volatile 不是线程安全,对其修饰的变量++ 加法减法等操作 保证不了线程安全而AtomicIntegerfieldupdater 实现了普通变量的原子操作 ,加法减都可以下面给出一个书上的例子,里面对AtomicI原创 2016-05-21 16:44:26 · 3417 阅读 · 2 评论 -
shutdown和shutdownNow--多线程任务的关闭
采用5.0的线程池关闭线程,不管怎样,最后都是调用Interrupt.而interrupt这个方法,并不是什么情况下都能结束线程,释放资源。Interrupt只是在线程阻塞的时候,抛个异常出来,从而结束这个阻塞。 比如像下面的这种代码,就不管怎么shutdown,或者是shutdownNow,都不会关闭: Java代码while (true ){转载 2016-10-09 16:44:13 · 3881 阅读 · 0 评论 -
Thread.currentThread.interrupt()
Thread.currentThread.interrupt() 只对阻塞线程起作用,当线程阻塞时,调用interrupt方法后,该线程会得到一个interrupt异常,可以通过对该异常的处理而退出线程对于正在运行的线程,没有任何作用! 先看收集了别人的文章,全面的了解下java的中断:中断线程线程的thread.interrupt()方法是中断线程,将会设置该...转载 2016-10-09 17:10:29 · 24037 阅读 · 3 评论 -
分布式之_多线程之指定线程运行服务器
ps: 以下转载自http://blog.csdn.net/hardworking0323/article/details/51123712作者目的是让某个线程只在某台服务器下面执行,比如定时任务只有一台执行。其实也可以利用quartz的集群配置完成转载目的 只是感觉作者这么实现蛮有意思的。。appliction-转载 2017-04-06 22:31:27 · 921 阅读 · 0 评论 -
Android性能优化之使用线程池处理异步任务
说到线程,我想大家都不陌生,因为在开发时候或多或少都会用到线程,而通常创建线程有两种方式:1、继承Thread类 2、实现Runnable接口虽说这两种方式都可以创建出一个线程,不过它们之间还是有一点区别的,主要区别在于在多线程访问同一资源的情况下,用Runnable接口创建的线程可以处理同一资源,而用Thread类创建的线程则各自独立处理,各自拥有自己的资源。转载 2017-08-07 18:30:15 · 460 阅读 · 0 评论 -
JAVA线程池ThreadPoolExecutor与阻塞队列BlockingQueue
从Java5开始,Java提供了自己的线程池。每次只执行指定数量的线程,java.util.concurrent.ThreadPoolExecutor 就是这样的线程池。以下是我的学习过程。首先是构造函数签名如下:[java] view plain copy print?public ThreadPoolExecutor(int co转载 2017-08-07 18:35:50 · 413 阅读 · 0 评论 -
submit与execute区别
(1)可以接受的任务类型 http://blog.csdn.net/cpf2016/article/details/50150205 submit: execute: 可以看出:转载 2017-08-13 20:04:02 · 580 阅读 · 0 评论 -
java lock await方法会释放掉当前锁 标准的生产者消费者问题
In all cases, before this method can return the current thread must re-acquire the lock associated with this condition. When the thread returns it isguaranteedto hold this lock. 会释放,其他线程执行...原创 2017-11-29 16:17:28 · 4335 阅读 · 1 评论 -
Java中停止线程执行的方法
一、暂停或停止线程的理论在Java编程中,要暂停或停止当前正在运行的线程,有几种方法。对于把线程转入睡眠Sleep状态,使用Thread.sleep()是最正确的方式。或许有人会问,为什么不使用等待wait()或通知notify()?要知道,使用等待或通知都不是很好的方式。线程可以使用等待wait()实现被阻塞,这属于条件等待的方式,当条件满足后,又会从阻塞转为等待状态。尽管可以在等待转载 2016-04-21 20:29:37 · 1644 阅读 · 0 评论