java 多线程
茅坤宝骏氹
语言:Java、C/C++、C#、Python、Linux Shell。
框架:Spring、Spring MVC、Spring Boot、Spring Cloud、Hibernate、Mybatis、Freemarker、Velocity。
前端:HTML5、CSS3、JavaScript、Bootstrap、JQuery、Vue、React。
数据库:oracle、mysql、MongoDB、HBase。
缓存:Memcache、Redis。
消息队列:kafka。
大数据:Hadoop、Hive、Sqoop、Flume、Spark、Strom、OpenTSDB、Druid。
展开
-
ThreadPoolExecutor 八种拒绝策略,对的,不是4种
转载自ThreadPoolExecutor 八种拒绝策略,对的,不是4种前言谈到 Java 的线程池最熟悉的莫过于 ExecutorService 接口了,jdk1.5 新增的 java.util.concurrent 包下的这个 api,大大的简化了多线程代码的开发。而不论你用 FixedThreadPool 还是 CachedThreadPool 其背后实现都是ThreadPoolExecutor。ThreadPoolExecutor 是一个典型的缓存池化设计的产物,因为池子有大小,当池子体..转载 2020-05-17 12:52:51 · 501 阅读 · 0 评论 -
Java多线程干货系列(1):Java多线程基础
转载自 Java多线程干货系列(1):Java多线程基础前言多线程并发编程是Java编程中重要的一块内容,也是面试重点覆盖区域,所以学好多线程并发编程对我们来说极其重要,下面跟我一起开启本次的学习之旅吧。正文线程与进程1 线程:进程中负责程序执行的执行单元线程本身依靠程序进行运行线程是程序中的顺序控制流,只能使用分配给程序的资源和环境2 进程:执行中的程序一个进程至少包含一个线程3 单线程:程序...转载 2018-06-08 07:45:00 · 243 阅读 · 2 评论 -
Java守护线程概述
转载自 Java守护线程概述Java的线程分为两种:User Thread(用户线程)、DaemonThread(守护线程)。只要当前JVM实例中尚存任何一个非守护线程没有结束,守护线程就全部工作;只有当最后一个非守护线程结束是,守护线程随着JVM一同结束工作,Daemon作用是为其他线程提供便利服务,守护线程最典型的应用就是GC(垃圾回收器),他就是一个很称职的守护者。User和Daemon两...转载 2018-06-08 07:44:39 · 148 阅读 · 0 评论 -
Java 中Timer和TimerTask 定时器和定时任务使用的例子
转载自 Java 中Timer和TimerTask 定时器和定时任务使用的例子这两个类使用起来非常方便,可以完成我们对定时器的绝大多数需求 Timer类是用来执行任务的类,它接受一个TimerTask做参数 Timer有两种执行任务的模式,最常用的是schedule,它可以以两种方式执行任务:1:在某个时间(Data),2:在某个固定的时间之后(int delay).这两种方式都可以指定任务执行...转载 2018-06-08 07:44:18 · 288 阅读 · 0 评论 -
Java多线程面试问题
转载自 Java多线程面试问题这篇文章主要是对多线程的面试问题进行总结的,罗列了40个多线程的问题。1、多线程有什么用?一个可能在很多人看来很扯淡的一个问题:我会用多线程就好了,还管它有什么用?在我看来,这个回答更扯淡。所谓"知其然知其所以然","会用"只是"知其然","为什么用"才是"知其所以然",只有达到"知其然知其所以然"的程度才可以说是把一个知识点运用自如。OK,下面转载 2018-09-25 19:39:26 · 132 阅读 · 0 评论 -
一文搞懂 Java 线程中断
转载自 一文搞懂 Java 线程中断在之前的一文《如何"优雅"地终止一个线程》中详细说明了 stop 终止线程的坏处及如何优雅地终止线程,那么还有别的可以终止线程的方法吗?答案是肯定的,它就是我们今天要分享的——线程中断。下面的这断代码大家应该再熟悉不过了,线程休眠需要捕获或者抛出线程中断异常,也就是你在睡觉的时候突然有个人冲进来把你吵醒了。try { Thread.sl...转载 2018-10-02 12:08:53 · 146 阅读 · 0 评论 -
sleep( ) 和 wait( ) 的这 5 个区别,你知道几个
转载自 sleep( ) 和 wait( ) 的这 5 个区别,你知道几个sleep(休眠) 和 wait(等待) 方法是 Java 多线程中常用的两个方法,它们有什么区别及一些该注意的地方有哪些呢?下面给大家一一分解。区别1:使用限制使用 sleep 方法可以让让当前线程休眠,时间一到当前线程继续往下执行,在任何地方都能使用,但需要捕获 InterruptedException 异...转载 2018-10-02 13:34:49 · 238 阅读 · 0 评论 -
什么是线程安全,你真的了解吗
转载自 什么是线程安全,你真的了解吗记得今年3月份刚来杭州面试的时候,有一家公司的技术总监问了我这样一个问题,说你给我说说有哪些线程安全的类,我心里一想,呵呵,这我早都背好了,稀里哗啦说了一大堆,那你再来说说什么是线程安全,然后就GG了,说真的,我们整天说线程安全,但是你对什么是线程安全真的了解嘛?说真的,我之前真的是了解甚微,那么我们今天就来聊聊这个问题。再说什么是线程安全之前我们先来...转载 2018-10-07 19:39:58 · 160 阅读 · 0 评论 -
Java中如何实现线程的超时中断
转载自 Java中如何实现线程的超时中断背景之前在实现熔断降级组件的时候,需要实现接口请求的超时中断。意思是,业务在使用熔断降级功能时,在平台上设置了一个超时时间,如果请求进入熔断器开始计时,接口在超时时间内没有响应,则需要提早中断该请求并返回。比如正常下游接口的超时时间为800ms,但是因为自身业务的特殊需求,最多只能等200ms,如果指定之内没有数据返回,则返回降级数据。这里处理...转载 2018-11-24 11:53:53 · 976 阅读 · 0 评论 -
Executor 与 ExecutorService 和 Executors 傻傻分不清
转载自Executor 与 ExecutorService 和 Executors 傻傻分不清java.util.concurrent.Executor, java.util.concurrent.ExecutorService, java.util.concurrent. Executors 这三者均是 Java Executor 框架的一部分,用来提供线程池的功能。因为创建和管理线程非...转载 2019-03-17 21:39:36 · 1722 阅读 · 1 评论 -
如何优雅的关闭Java线程池
转载自如何优雅的关闭Java线程池面试中经常会问到,创建一个线程池需要哪些参数、线程池的工作原理,却很少会问到线程池如何安全关闭的。也正是因为专家不是很关注这块,即便是工作三四年的人,也会有因为线程池关闭不合理,导致应用无法正常stop的情况,还有出现些报错的问题。本篇就以ThreadPoolExecutor为例例,来介绍下如何优雅的关闭线程池。线程中断在介绍线程池关...转载 2019-07-27 13:28:52 · 2841 阅读 · 1 评论 -
15个顶级Java多线程面试题及答案
转载自15个顶级Java多线程面试题及答案在任何Java面试当中多线程和并发方面的问题都是必不可少的一部分。如果你想获得更多职位,那么你应该准备很多关于多线程的问题。他们会问面试者很多令人混淆的Java线程问题。面试官只是想确信面试者有足够的Java线程与并发方面的知识,因为候选人中有很多只浮于表面。现在引用Java5并发包关于并发工具和并发集合的问题正在增多。那些问题中ThreadL...转载 2019-08-25 13:51:18 · 335 阅读 · 0 评论 -
面试官问:为什么 Java 线程没有 Running 状态?我懵了
转载自面试官问:为什么 Java 线程没有 Running 状态?我懵了 什么是 RUNNABLE? 与传统的ready状态的区别 与传统的running状态的区别 当I/O阻塞时 如何看待RUNNABLE状态? Java虚拟机层面所暴露给我们的状态,与操作系统底层的线程状态是两个不同层面的事。具体而言,这里说的 Java 线程状态均来自于 Th...转载 2019-08-31 12:57:36 · 542 阅读 · 0 评论 -
15个顶级Java多线程面试题及答案
转载自15个顶级Java多线程面试题及答案在任何Java面试当中多线程和并发方面的问题都是必不可少的一部分。如果你想获得更多职位,那么你应该准备很多关于多线程的问题。他们会问面试者很多令人混淆的Java线程问题。面试官只是想确信面试者有足够的Java线程与并发方面的知识,因为候选人中有很多只浮于表面。现在引用Java5并发包关于并发工具和并发集合的问题正在增多。那些问题中ThreadL...转载 2019-08-31 13:30:49 · 164 阅读 · 0 评论 -
面试官让我讲下线程的WAITING状态,我笑了
转载自面试官让我讲下线程的WAITING状态,我笑了面试官Q:你讲下线程状态中的WAITING状态,什么时候会处于这个状态?什么时候离开这个状态?小菜J 会心一笑...一个正在无限期等待另一个线程执行一个特别的动作的线程处于WAITING状态。A thread that is waiting indefinitely for another thread to perform...转载 2019-08-31 13:37:58 · 1266 阅读 · 0 评论 -
面试官让我讲下线程的TIMED_WAITING状态,我又笑了
转载自面试官让我讲下线程的TIMED_WAITING状态,我又笑了面试官Q:你讲下线程状态中的WAITING状态,什么时候会处于这个状态?什么时候离开这个状态?小菜J 会心一笑,可以撮这里 ->线程的WAITING状态面试官Q:那你继续讲下TIMED_WAITING状态小菜J,又笑了。一个正在限时等待另一个线程执行一个动作的线程处于这一状态。A thread ...转载 2019-08-17 19:48:03 · 1855 阅读 · 0 评论 -
Java多线程学习
转载自 Java多线程学习 本文主要讲了java中多线程的使用方法、线程同步、线程数据传递、线程状态及相应的一些线程函数用法、概述等。在这之前,首先让我们来了解下在操作系统中进程和线程的区别: 进程:每个进程都有独立的代码和数据空间(进程上下文),进程间的切换会有较大的开销,一个进程包含1--n个线程。(进程是资源分配的最小单位) 线程:同一类线程共享代码和数据空间,每个线程有独立的运行...转载 2018-06-08 07:45:14 · 155 阅读 · 0 评论 -
进程和线程关系及区别
转载自 进程和线程关系及区别1.定义进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位.线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源....转载 2018-07-20 09:28:55 · 113 阅读 · 0 评论 -
Java多线程:实现方式Thread与Runnable
转载自 Java多线程:实现方式在Java中, 多线程的实现有两种方式:扩展java.lang.Thread类实现java.lang.Runnable接口方法1/** * @Description: 继承Thread类, 实现多线程. * @author snoopy * @blog http://blog.csdn.net/huang_xw */ packag...转载 2018-07-20 09:29:05 · 169 阅读 · 0 评论 -
Java多线程sleep和wait的区别,总结得非常好
转载自 Java多线程sleep和wait的区别,总结得非常好我们都知道sleep是让线程休眠,到时间后会继续执行,wait是等待,需要唤醒再继续执行,那么这两种方法在多线程中的表现形态,它们各有什么区别呢?可以总结为以下几点。使用上从使用角度看,sleep是Thread线程类的方法,而wait是Object顶级类的方法。sleep可以在任何地方使用,而wait只能在同步方法或者同步块中使用。CP...转载 2018-04-28 09:56:28 · 253 阅读 · 0 评论 -
Java多线程之守护线程实战
转载自 Java多线程之<<守护线程>>实战定义什么是守护线程?与守护线程相对应的就是用户线程,守护线程就是守护用户线程,当用户线程全部执行完结束之后,守护线程才会跟着结束。也就是守护线程必须伴随着用户线程,如果一个应用内只存在一个守护线程,没有用户线程,守护线程自然会退出。应用下面是守护线程的一个简单应用创建一个简单的线程,把一个线程设置daemon为true即表示设置为...转载 2018-05-03 09:39:00 · 211 阅读 · 0 评论 -
学习java多线程,这必须搞懂的这几个概念
转载自 学习java多线程,这必须搞懂的这几个概念,很重要。同步和异步同步,Synchronous,即调用方法开始,一旦调用就必须等待方法执行完返回才能继续下面的操作。举个例子,你去银行ATM取钱,你必须等到ATM吐完钱你拿到钱取完卡你才能离开。异步,Asynchronous,即不关心方法执行的过程,触发要调用的方法就继续执行下面的操作,不会像同步那样阻塞直要到方法完成才继续。举个例子,你这次要取...转载 2018-05-02 13:03:37 · 216 阅读 · 0 评论 -
java多线程中的死锁、活锁、饥饿、无锁都是什么鬼?
转载自 java多线程中的死锁、活锁、饥饿、无锁都是什么鬼?死锁、活锁、饥饿是关于多线程是否活跃出现的运行阻塞障碍问题,如果线程出现了这三种情况,即线程不再活跃,不能再正常地执行下去了。死锁死锁是多线程中最差的一种情况,多个线程相互占用对方的资源的锁,而又相互等对方释放锁,此时若无外力干预,这些线程则一直处理阻塞的假死状态,形成死锁。举个例子,A同学抢了B同学的钢笔,B同学抢了A同学的书,两个人都...转载 2018-05-02 13:03:46 · 613 阅读 · 0 评论 -
高级java必须清楚的概念:原子性、可见性、有序性
转载自 高级java必须清楚的概念:原子性、可见性、有序性原子性、可见性、有序性是多线程编程中最重要的几个知识点,由于多线程情况复杂,如何让每个线程能看到正确的结果,这是非常重要的。原子性原子性是指一个线程的操作是不能被其他线程打断,同一时间只有一个线程对一个变量进行操作。在多线程情况下,每个线程的执行结果不受其他线程的干扰,比如说多个线程同时对同一个共享成员变量n++100次,如果n初始值为0,...转载 2018-05-02 13:03:59 · 254 阅读 · 0 评论 -
精选30道Java多线程面试题
转载自 精选30道Java多线程面试题1、线程和进程的区别2、实现线程有哪几种方式?3、线程有哪几种状态?它们之间如何流转的?4、线程中的start()和run()方法有什么区别?5、怎么终止一个线程?如何优雅地终止线程?6、ThreadLocal在多线程中扮演什么角色?7、线程中的wait()和sleep()方法有什么区别?8、多线程同步有哪几种方法?9、什么是死锁?如何避免死锁?10、多线程之...转载 2018-05-04 10:26:33 · 276 阅读 · 0 评论 -
一个多线程死锁案例,如何避免及解决死锁问题
转载自 一个多线程死锁案例,如何避免及解决死锁问题多线程死锁在java程序员笔试的时候时有遇见,死锁概念在之前的文章有介绍,大家应该也都明白它的概念,不清楚的去翻看历史文章吧。下面是一个多线程死锁的例子输出thread1 get lock1thread2 get lock2两个线程相互得到锁1,锁2,然后线程1等待线程2释放锁2,线程2等待线程1释放锁1,两者各不相互,这样形成死锁。那么如何避免和...转载 2018-05-05 09:55:00 · 1237 阅读 · 0 评论 -
Java 线程池框架核心代码分析
转载自 Java 线程池框架核心代码分析前言多线程编程中,为每个任务分配一个线程是不现实的,线程创建的开销和资源消耗都是很高的。线程池应运而生,成为我们管理线程的利器。Java 通过Executor接口,提供了一种标准的方法将任务的提交过程和执行过程解耦开来,并用Runnable表示任务。下面,我们来分析一下 Java 线程池框架的实现ThreadPoolExecutor。下面的分析基于JDK1....转载 2018-05-08 10:23:23 · 124 阅读 · 0 评论 -
教你如何监控 Java 线程池运行状态
转载自 干货 | 教你如何监控 Java 线程池运行状态之前写过一篇 Java 线程池的使用介绍文章《线程池全面解析》,全面介绍了什么是线程池、线程池核心类、线程池工作流程、线程池分类、拒绝策略、及如何提交与关闭线程池等。但在实际开发过程中,在线程池使用过程中可能会遇到各方面的故障,如线程池阻塞,无法提交新任务等。如果你想监控某一个线程池的执行状态,线程池执行类 ThreadPoolExecuto...转载 2018-05-06 14:36:05 · 6334 阅读 · 0 评论 -
Java虚拟机是如何执行线程同步的
转载自 [译]Java虚拟机是如何执行线程同步的想介绍下synchronized的原理,但是又不知道从何下手,在网上看到一篇老外的文章,介绍了和线程同步相关的几个基础知识点。所以想把它翻译一下给大家看看。相信看过这些基础知识之后再看我后面要写的synchronized的原理就会好理解一点了。原文地址:How the Java virtual machine performs thread sync...转载 2018-05-23 09:17:14 · 167 阅读 · 0 评论 -
java高级应用:线程池全面解析
转载自 java高级应用:线程池全面解析什么是线程池?很简单,简单看名字就知道是装有线程的池子,我们可以把要执行的多线程交给线程池来处理,和连接池的概念一样,通过维护一定数量的线程池来达到多个线程的复用。线程池的好处我们知道不用线程池的话,每个线程都要通过new Thread(xxRunnable).start()的方式来创建并运行一个线程,线程少的话这不会是问题,而真实环境可能会开启多个线程让系...转载 2018-04-29 20:07:47 · 276 阅读 · 0 评论 -
实现java多线程的3种方式,99%人没用过第3种
转载自 实现java多线程的3种方式,99%人没用过第3种实现多线程的3种方式1、继承Thread类看jdk源码可以发现,Thread类其实是实现了Runnable接口的一个实例,继承Thread类后需要重写run方法并通过start方法启动线程。继承Thread类耦合性太强了,因为java只能单继承,所以不利于扩展。2、实现Runnable接口通过实现Runnable接口并重写run方法,并把R...转载 2018-04-29 20:08:08 · 208 阅读 · 0 评论 -
Java多线程神器:join使用及原理
转载自 Java多线程神器:join使用及原理join()join()是线程类 Thread的方法,官方的说明是:Waits for this thread to die.等待这个线程结束,也就是说当前线程等待这个线程结束后再继续执行,下面来看这个示例就明白了。示例public static void main(String[] args) throws Exception { Syste...转载 2018-04-29 20:08:28 · 220 阅读 · 0 评论 -
一张图弄懂java线程的状态和生命周期
转载自 一张图弄懂java线程的状态和生命周期上图是一个线程的生命周期状态流转图,很清楚的描绘了一个线程从创建到终止的过程。这些状态的枚举值都定义在java.lang.Thread.State下NEW:毫无疑问表示的是刚创建的线程,还没有开始启动。RUNNABLE: 表示线程已经触发start()方式调用,线程正式启动,线程处于运行中状态。BLOCKED:表示线程阻塞,等待获取锁,如碰到sync...转载 2018-04-29 20:08:37 · 692 阅读 · 0 评论 -
Java 多线程 并发编程
转载自 Java 多线程 并发编程 一、多线程1、操作系统有两个容易混淆的概念,进程和线程。进程:一个计算机程序的运行实例,包含了需要执行的指令;有自己的独立地址空间,包含程序内容和数据;不同进程的地址空间是互相隔离的;进程拥有各种资源和状态信息,包括打开的文件、子进程和信号处理。线程:表示程序的执行流程,是CPU调度执行的基本单位;线程有自己的程序计数器、寄存器、堆栈和帧。...转载 2018-07-20 09:30:59 · 232 阅读 · 0 评论 -
如何"优雅"地终止一个线程?
转载自 如何"优雅"地终止一个线程?我们的系统肯定有些线程为了保证业务需要是要常驻后台的,一般它们不会自己终止,需要我们通过手动来终止它们。我们知道启动一个线程是start方法,自然有一个对应的终止线程的stop方法,通过stop方法可以很快速、方便地终止一个线程,我们来看看stop的源代码。通过注解@Deprecated看出stop方法被标为废弃的方法,jdk在以后的版本中可能被移除,不建议大家...转载 2018-05-03 09:39:19 · 173 阅读 · 0 评论