
多线程与并发编程
茴香豆的茴有六种写法
这个作者很懒,什么都没留下…
展开
-
经典多线程面试题
1) 什么是线程? 线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位。程序员可以通过它进行多处理器编程,你可以使用多线程对运算密集型任务提速。比如,如果一个线程完成一个任务要 100 毫秒,那么用十个线程完成改任务只需 10 毫秒。Java 在语言层面对多线程提供了卓越的支持,它也是一个很好的卖点。欲了解更多详细信息请点击这里。 2) 线程和进程转载 2017-02-18 20:53:48 · 3046 阅读 · 0 评论 -
Java并发之AQS详解
转载!原文链接:https://www.cnblogs.com/waterystone/p/4920797.html 原作者:水岩一、概述 谈到并发,不得不谈ReentrantLock;而谈到ReentrantLock,不得不谈AbstractQueuedSynchronizer(AQS)! 类如其名,抽象的队列式的同步器,AQS定义了一套多线程访问共享资源的同步器框架,许多同步...转载 2019-07-29 15:15:33 · 1512 阅读 · 0 评论 -
多次start一个线程会怎么样
答案是:java.lang.IllegalThreadStateException源码如下/** * Causes this thread to begin execution; the Java Virtual Machine * calls the <code>run</code> method of this thread. ...原创 2019-07-12 17:55:02 · 3835 阅读 · 0 评论 -
守护线程和用户线程的区别
如果JVM中所有的线程都是守护线程,那么JVM就会退出,进而守护线程也会退出。如果JVM中还存在用户线程,那么JVM就会一直存活,不会退出。由此可以得到:守护线程是依赖于用户线程,用户线程退出了,守护线程也就会退出,典型的守护线程如垃圾回收线程。用户线程是独立存在的,不会因为其他用户线程退出而退出。默认情况下启动的线程是用户线程,通过setDaemon(true)将线程设置成守...转载 2019-07-02 10:04:37 · 3413 阅读 · 0 评论 -
线程池(工作流程、四中线程池的应用场景)
线程池任务执行流程: 当线程池小于corePoolSize时,新提交任务将创建一个新线程执行任务,即使此时线程池中存在空闲线程。 当线程池达到corePoolSize时,新提交任务将被放入workQueue中,等待线程池中任务调度执行 当workQueue已满,且maximumPoolSize>corePoolSize时,新提交任务会创建新线程执行任务 当提...转载 2019-04-17 13:48:25 · 3598 阅读 · 0 评论 -
使用多线程提高rest服务性能
tomcat管理线程数量有限,当达到一定请求数量时,无法继续接受请求,使用多线程的方式,可以调用一个异步线程来执行。执行逻辑如下图,tomcat就收http请求,调用一个副线程进行处理,副线程处理后,将结果返回给主线程。在副线程处理整个业务逻辑的过程中,主线程可以空闲出来,去处理其他请求。使得服务器的吞吐量可以有一个很大的提升。用同步方式和异步方式编写两个请求(github地址)...原创 2019-01-07 09:20:40 · 4077 阅读 · 0 评论 -
多线程与高并发
1.Callable和RunnableI Callable定义的方法是call,而Runnable定义的方法是run。II Callable的call方法可以有返回值,而Runnable的run方法不能有返回值。III Callable的call方法可抛出异常,而Runnable的run方法不能抛出异常。 Runnable 不做具体介绍通过实现Calla...转载 2017-07-25 19:59:13 · 9090 阅读 · 1 评论 -
线程间通信
子线程循环10次,主线程循环100次交替循环50次public class TraditionalThreadCommunication { public static void main(String[] args) { final Business business = new Business(); new Thread(原创 2017-10-07 17:26:33 · 1569 阅读 · 0 评论 -
线程池在springboot中简单使用
一次性发多封邮件是一个比较耗时的功能,因此可以考虑借助于线程池Spring通过任务执行器(TaskExecutor)来实现多线程和并发编程。使用ThreadPoolTaskExecutor可实现一个基于线程池的TaskExecutor.在开发中实现异步任务,我们可以在配置类中添加@EnableAsync开始对异步任务的支持,并在相应的方法中使用@Async注解来声明一个异步任务。1.在ap...原创 2019-03-26 20:52:07 · 10844 阅读 · 0 评论