
线程
文章平均质量分 85
馥钰
好人一生平安!道阻且长,行则将至!
选择一条自己喜欢的路,向前走,莫回头!
天道酬勤!
学海无涯,温故而知新!
线下不努力,线上出问题!线上出问题,努力全白费!
分布式系统、高并发、大流量,分布式计算、分布式存储!
展开
-
JAVA多线程之中断机制(如何处理中断?)
JAVA多线程之中断机制(如何处理中断?) - 大熊猫同学 - 博客园一,介绍这篇文章主要记录使用 interrupt() 方法中断线程,以及如何对InterruptedException进行处理。感觉对InterruptedException异常进行处理是一件谨慎且有技巧的活儿。由于使用stop()方法停止线程非常的暴力,人家线程运行的好好的,突然就把人家杀死了,线程占用的锁被强制释放,极易导致数据的不一致性。可参考这篇文章对stop()方法的介绍。因此,提出了一种温和的方式:请求另外转载 2022-02-22 11:53:11 · 1107 阅读 · 1 评论 -
Java ConcurrentModificationException异常原因和解决方法
在前面一篇文章中提到,对Vector、ArrayList在迭代的时候如果同时对其进行修改就会抛出java.util.ConcurrentModificationException异常。下面我们就来讨论以下这个异常出现的原因以及解决办法。 以下是本文目录大纲: 一.ConcurrentModificationException异常出现的原因 二.在单线程环境下的解决办法 三.在多线程环境下的...转载 2017-10-13 17:35:22 · 313 阅读 · 0 评论 -
Java细粒度锁实现的3种方式
1. 分段锁借鉴concurrentHashMap的分段思想,先生成一定数量的锁,具体使用的时候再根据key来返回对应的lock。这是几个实现里最简单,性能最高,也是最终被采用的锁策略,代码如下:1234567891011121314151转载 2017-10-25 11:49:39 · 314 阅读 · 0 评论 -
servlet 如何处理多请求访问以及线程讲解
http://www.cnblogs.com/GtShare/p/8033637.html一、Servlet如何处理多个请求访问?Servlet容器默认是采用单实例多线程的方式处理多个请求的:1.当web服务器启动的时候(或客户端发送请求到服务器时),Servlet就被加载并实例化(只存在一个Servlet实例);2.容器初始化Servlet主要就是读取配置文件(例如tomcat转载 2018-01-23 00:08:03 · 1072 阅读 · 0 评论 -
Java中的多线程你只要看这一篇就够了 引
https://www.cnblogs.com/wxd0108/p/5479442.html引如果对什么是线程、什么是进程仍存有疑惑,请先Google之,因为这两个概念不在本文的范围之内。用多线程只有一个目的,那就是更好的利用cpu的资源,因为所有的多线程代码都可以用单线程来实现。说这个话其实只有一半对,因为反应“多角色”的程序代码,最起码每个角色要给他一个线程吧,否则连实际场景都无法模拟,当然也...转载 2018-02-26 23:32:53 · 204 阅读 · 0 评论 -
彻底理解ThreadLocal
https://www.cnblogs.com/xzwblog/p/7227509.html参考:http://www.iteye.com/topic/103804http://www.iteye.com/topic/777716源码分析 为了解释ThreadLocal类的工作原理,必须同时介绍与其工作甚密的其他几个类ThreadLocalMap(内部类)Thread 首先,在Thread类中...转载 2018-02-27 16:45:43 · 176 阅读 · 0 评论 -
浅谈多线程在java程序中的应用
http://blog.youkuaiyun.com/u014035172/article/details/68061476在一个高并发的网站中,多线程是必不可少的。下面先说一下多线程在程序中的作用。1、提高前端请求的响应速度。当我们执行一个比较耗时的方法时,http请求得不到响应甚至会超时,这时如果业务上允许数据的延迟,我们可以使用多线程来进行处理比较耗时的方法。这样前端发送了请求,后端令开启了一个线程去处...转载 2018-03-01 21:42:49 · 171 阅读 · 0 评论 -
java Web项目中什么场景中会用到java多线程?
http://blog.youkuaiyun.com/u012661010/article/details/76696309问:能不能简单描述一下你在java web开发中需要用到多线程编程的场景?对多线程有些了解,但是不太清楚具体的应用场景,能简单说一下你遇到的多线程编程的场景吗?回答一:最典型的如:1、用户注册完成送大礼包/积分之类,且积分等也是另一个系统并比较耗时;且这类任务即使失败也不是特别重要的。2...转载 2018-03-01 22:21:04 · 1624 阅读 · 0 评论 -
模拟多线程在java web项目中的应用--Excel文件导入
以前知道线程,也只是继承Thread或者实现Runnable接口,只是基本的皮毛。后来看了Executor框架,及其内部实现ThreadPoolExecutor,大体知道怎么回事,但是怎么用在实际的项目里,还不是没有什么头绪!后来看了《 java Web项目中什么场景中会用到java多线程?》,大体有点明白,耗时的批量任务都可考虑用多线程优化!个人总结:执行效率特别低,耗时特别长都可以考虑多线程。...原创 2018-03-02 15:07:39 · 2590 阅读 · 0 评论 -
Java并发编程:Callable、Future和FutureTask
在前面的文章中我们讲述了创建线程的2种方式,一种是直接继承Thread,另外一种就是实现Runnable接口。 这2种方式都有一个缺陷就是:在执行完任务之后无法获取执行结果。 如果需要获取执行结果,就必须通过共享变量或者使用线程通信的方式来达到效果,这样使用起来就比较麻烦。 而自从Java 1.5开始,就提供了Callable和Future,通过它们可以在任务执行完毕之后得到任务执行结果。 ...转载 2018-04-10 17:04:19 · 116 阅读 · 0 评论 -
java中的sleep()和wait()的区别
https://www.cnblogs.com/hongten/p/hongten_java_sleep_wait.html对于sleep()方法,我们首先要知道该方法是属于Thread类中的。而wait()方法,则是属于Object类中的。sleep()方法导致了程序暂停执行指定的时间,让出cpu该其他线程,但是他的监控状态依然保持者,当指定的时间到了又会自动恢复运行状态。在调用sleep()方...转载 2018-03-29 15:22:09 · 247 阅读 · 0 评论 -
Java并发之AQS详解
https://www.cnblogs.com/waterystone/p/4920797.html一、概述 谈到并发,不得不谈ReentrantLock;而谈到ReentrantLock,不得不谈AbstractQueuedSynchronizer(AQS)! 类如其名,抽象的队列式的同步器,AQS定义了一套多线程访问共享资源的同步器框架,许多同步类实现都依赖于它,如常用的Ree...转载 2018-09-23 15:23:18 · 141 阅读 · 0 评论 -
Java并发编程:同步容器
为了方便编写出线程安全的程序,Java里面提供了一些线程安全类和并发工具,比如:同步容器、并发容器、阻塞队列、Synchronizer(比如CountDownLatch)。今天我们就来讨论下同步容器。 以下是本文的目录大纲: 一.为什么会出现同步容器? 二.Java中的同步容器类 三.同步容器的缺陷 若有不正之处请多多谅解,并欢迎批评指正。 请尊重作者劳动成果,转载请标明原文链接: ...转载 2017-10-13 17:03:19 · 254 阅读 · 0 评论 -
Java并发编程:volatile关键字解析
http://www.cnblogs.com/dolphin0520/p/3920373.htmlvolatile这个关键字可能很多朋友都听说过,或许也都用过。在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果。在Java 5之后,volatile关键字才得以重获生机。 volatile关键字虽然从字面上理解起来比较简单,但是要用好不是一件容易的事情。由于v...转载 2017-10-13 16:11:57 · 215 阅读 · 0 评论 -
Java并发编程:线程池的使用
在前面的文章中,我们使用线程的时候就去创建一个线程,这样实现起来非常简便,但是就会有一个问题: 如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程就会大大降低系统的效率,因为频繁创建线程和销毁线程需要时间。 那么有没有一种办法使得线程可以复用,就是执行完一个任务,并不被销毁,而是可以继续执行其他的任务? 在Java中可以通过线程池来达到这样的效果。今天我...转载 2017-08-12 11:39:35 · 255 阅读 · 0 评论 -
java多线程总结五:线程池的原理及实现
1、线程池简介: 线程池技术主要解决处理器单元内多个线程执行的问题,它可以显著减少处理器单元的闲置时间,增加处理器单元的吞吐能力。 假设一个服务器完成一项任务所需时间为:T1 创建线程时间,T2 在线程中执行任务的时间,T3 销毁线程时间。 如果:T1 + T3 远大于 T2,则可以采用线程池,以提高服务器性能。 一个线程转载 2017-08-12 14:19:42 · 232 阅读 · 0 评论 -
Java四种线程池的使用
Java通过Executors提供四种线程池,分别为:newCachedThreadPool创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程。newFixedThreadPool 创建一个定长线程池,可控制线程最大并发数,超出的线程会在队列中等待。newScheduledThreadPool 创建一个定长线程池,支持定时及周期性任务执行。newSingl...转载 2017-08-12 14:35:20 · 256 阅读 · 0 评论 -
Java多线程知识小抄集(三)
本文主要整理博主遇到的Java多线程的相关知识点,适合速记,故命名为“小抄集”。本文没有特别重点,每一项针对一个多线程知识做一个概要性总结,也有一些会带一点例子,习题方便理解和记忆。51. SimpleDateFormat非线程安全当多个线程共享一个SimpleDateFormat实例的时候,就会出现难以预料的异常。主要原因是parse()方法使用calendar来生成返回转载 2017-08-14 11:33:24 · 106 阅读 · 0 评论 -
Java多线程知识小抄集(二)
本文主要整理博主遇到的Java多线程的相关知识点,适合速记,故命名为“小抄集”。本文没有特别重点,每一项针对一个多线程知识做一个概要性总结,也有一些会带一点例子,习题方便理解和记忆。27. ConcurrentHashMapConcurrentHashMap是线程安全的HashMap,内部采用分段锁来实现,默认初始容量为16,装载因子为0.75f,分段16,每个段的HashEntr转载 2017-08-14 11:33:49 · 295 阅读 · 0 评论 -
Java多线程知识小抄集(一)
本文主要整理博主遇到的Java多线程的相关知识点,适合速记,故命名为“小抄集”。本文没有特别重点,每一项针对一个多线程知识做一个概要性总结,也有一些会带一点例子,习题方便理解和记忆。1. interrupted与isInterrupted的区别interrupted():测试当前线程是否已经是中断状态,执行后具有状态标志清除为false的功能。 isInterrupted():转载 2017-08-14 11:34:12 · 324 阅读 · 0 评论 -
java常用的几种线程池比较
1. 为什么使用线程池诸如 Web 服务器、数据库服务器、文件服务器或邮件服务器之类的许多服务器应用程序都面向处理来自某些远程来源的大量短小的任务。请求以某种方式到达服务器,这种方式可能是通过网络协议(例如 HTTP、FTP 或 POP)、通过 JMS 队列或者可能通过轮询数据库。不管请求如何到达,服务器应用程序中经常出现的情况是:单个任务处理的时间很短而请求的数目却是巨大的。构建服务器应转载 2017-09-25 12:01:39 · 317 阅读 · 0 评论 -
Java并发编程:如何创建线程?
在前面一篇文章中已经讲述了在进程和线程的由来,今天就来讲一下在Java中如何创建线程,让线程去执行一个子任务。下面先讲述一下Java中的应用程序和进程相关的概念知识,然后再阐述如何创建线程以及如何创建进程。下面是本文的目录大纲: 一.Java中关于应用程序和进程相关的概念 二.Java中如何创建线程 三.Java中如何创建进程 若有不正之处,请多多谅解并欢迎批评指正。转载 2017-10-10 14:55:42 · 214 阅读 · 0 评论 -
Java并发编程:Thread类的使用
http://www.cnblogs.com/dolphin0520/p/3920357.html在前面2篇文章分别讲到了线程和进程的由来、以及如何在Java中怎么创建线程和进程。今天我们来学习一下Thread类,在学习Thread类之前,先介绍与线程相关知识:线程的几种状态、上下文切换,然后接着介绍Thread类中的方法的具体使用。 以下是本文的目录大纲: 一.线程的状态转载 2017-10-10 15:02:22 · 262 阅读 · 0 评论 -
Java并发编程:synchronized
http://www.cnblogs.com/dolphin0520/p/3923737.html虽然多线程编程极大地提高了效率,但是也会带来一定的隐患。比如说两个线程同时往一个数据库表中插入不重复的数据,就可能会导致数据库中插入了相同的数据。今天我们就来一起讨论下线程安全问题,以及Java中提供了什么机制来解决线程安全问题。 以下是本文的目录大纲: 一.什么时候会出现线程安全转载 2017-10-10 15:32:53 · 186 阅读 · 0 评论 -
Java并发编程:Lock
http://www.cnblogs.com/dolphin0520/p/3923167.html在上一篇文章中我们讲到了如何使用关键字synchronized来实现同步访问。本文我们继续来探讨这个问题,从Java 5之后,在java.util.concurrent.locks包下提供了另外一种方式来实现同步访问,那就是Lock。 也许有朋友会问,既然都可以通过synchronized来实现同步...转载 2017-10-10 19:35:23 · 210 阅读 · 0 评论 -
多线程的应用场景
通俗的解释一下多线程先:多线程用于堆积处理,就像一个大土堆,一个推土机很慢,那么10个推土机一起来处理,当然速度就快了,不过由于位置的限制,如果20个推土机,那么推土机之间会产生相互的避让,相互摩擦,相互拥挤,反而不如10个处理的好,所以,多线程处理,线程数要开的恰当,就可以提高效率。多线程使用的目的:1、 吞吐量:做WEB,容器帮你做了多线程,但是它只能帮你做请求层面的,简单的说,就是一个请求...转载 2017-08-03 19:58:04 · 288 阅读 · 0 评论