![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JAVA-多线程
qq_33617861
这个作者很懒,什么都没留下…
展开
-
JAVA多线程之ThreadLocal详解
JAVA多线程之ThreadLocal详解概述在java多线程编程中,大部分的变量都不是线程安全的,多个线程间同时使用同一个变量便会产生各种问题,我们可以使用synchronized等同步方案解决,但是同步是要牺牲一定性能的,很多情况下我们并不需要这种方案,于是便有了一种牺牲空间的方案:ThreadLocal变量简介ThreadLocal结构ThreadLocal为每一个线程维护了一个副本变量,多个线程之间对各自副本变量的修改肯定不会产生相互的的影响我们先来看一下ThreadLocal的结构图,原创 2020-08-18 15:33:47 · 234 阅读 · 0 评论 -
java线程间通信
java线程间通信java线程间通信模型可分为两种:共享内存和消息传递。该文章主要对共享内存的方式介绍线程间的通信一、volatile 关键字使用volatile关键字修饰变量,将会使变量线程间可见即每次获取都是最新的值。如下文的示例代码,通过volatile修饰标志变量flag,使得线程在获取flag的值时总是最新的,每个线程对flag进行更改,以此达到线程间的通信public class VolatileDemo { volatile Boolean flag = false;原创 2020-08-17 19:11:28 · 133 阅读 · 0 评论 -
JAVA线程池解析
JAVA线程池为什么要用线程池概念我们在数据库连接池中也接触过,那线程池顾名思义就是存放线程的池子,是一个容器,我们预先创建若干线程放在容器中,使用的时候直接拿来用,用完放回去。优势线程的创建与销毁是要消耗系统资源的,使用线程池能够一定程度上减少这一部分的开销当有任务到达时,直接从线程池中取线程来复用,肯定要比新建线程快,这便能提高系统的响应速度线程池可以对线程进行统一管理,避免随便开启线程导致内存溢出的问题,同时可以避免cpu的过度切换提供一些扩展功能,如延时、定时线程池自定义线程池原创 2020-08-17 11:17:42 · 127 阅读 · 0 评论 -
有返回值的多线程:Callable与Future、FutureTask
有返回值的多线程:Callable与Future、FutureTaskCallableCallable是一个泛型接口,只实现了一个call()方法,这个跟Runnable类似,但是call()方法返回了一个传入的泛型结果,并且该方法是会抛出异常的public interface Callable<V> { /** * Computes a result, or throws an exception if unable to do so. * * @r原创 2020-08-17 11:15:09 · 355 阅读 · 0 评论 -
JAVA线程创建的基本方式
线程创建的基础方式线程创建主要分为两大类,一类是实现Runnable、Callable或继承Thread类后直接创建,另一种是通过线程池创建继承Thread类创建线程Thread类实际上是实现了Runnable类并实现了run()方法,我们在继承Thread类后,也需要重写run()方法,在run()方法中实现我们的业务逻辑,并调用子类的start()方法,开启一个线程并执行业务;// 继承Thread类,重写run()方法public class ThreadDemo extends Threa原创 2020-08-12 15:14:51 · 121 阅读 · 0 评论