Java多线程
文章平均质量分 93
迷途码界
一些原理解读,经验分享
segmentfault:迷途码界(https://segmentfault.com/u/cclovel/articles)
展开
-
Java 内存模型
Java内存模型(JMM)即共享内存模型,JMM 决定一个线程对共享变量的写入时,能对另一个线程可见。从抽象的角度来看,JMM 定义了线程和主内存之间的抽象关系:主内存(main memory):存储线程之间的共享变量,本地内存(local memory):每个线程私有的,本地存储中存储了该线程以读/写共享变量的副本。本地内存是 JMM 的一个抽象概念,并非真实存在。它涵盖了缓存、写...原创 2020-02-11 16:56:48 · 127 阅读 · 0 评论 -
Java多线程 相关概念总结
什么是线程进程的最小单元线程自己不拥有系统资源一个线程可以创建和撤销另一个线程线程有就绪、阻塞、运行三种基本状态线程的两种实现方法继承 Thread 类,并重写run 函数实现 Runnable 接口,并重写 run 函数线程、进程的区别进程:是资源(CPU、内存等)分配的基本单位,它是程序执行时的一个实例。线程:是程序执行时的最小单位,它是进程的一个执行流,是CP...原创 2018-12-06 23:21:00 · 235 阅读 · 0 评论 -
ThreadLocal、InheritableThreadLocal、TransmittableThreadLocal 原理分析即使用
ThreadLocal的设计理念与作用?原理:ThreadLocal 是一个线程的内部存储类(也叫线程本地变量\线程本地存储),可以在每个线程的内部存储数据,当某个数据的作用域应该对应线程的时候就应该使用它;每个线程中都会维护一个ThreadLocal.ThreadLocalMap类型的成员变量 threadLocals,当在某个线程中访问时,会取出这个线程自己的Map并且用当前Thread...原创 2019-04-29 21:56:40 · 257 阅读 · 0 评论 -
sleep() 和 wait() 的区别分析
wait() 和 sleep() 的区别sleep是线程中的方法,但是wait是Object中的方法。sleep方法不会释放lock,但是wait会释放,而且会加入到等待队列中。sleep方法不依赖于同步器synchronized,但是wait需要依赖synchronized关键字。sleep不需要被唤醒(休眠之后推出阻塞,他的监控状态依然保持着,当指定的时间到了又会自动恢复运行状态),...原创 2020-04-26 12:32:09 · 475 阅读 · 0 评论 -
多线程之间如何通讯、Synchronized与Lock、ThreadLocal分析
多线程之间如何通讯多线程之间通讯:其实就是多个线程在操作同一个资源(共享资源),但是操作的动作不同。多线程通讯场景:第一个线程写入(input)用户,另一个线程读取(out)用户。实现读一个,写一个操作。应用示例 — 消息中间件,对应生产者、消费者。发布 / 写操作订阅 / 读操作InputThread 生产者线程共享资源 / 中间件OutThread 消费者线程/** * 共享资源...原创 2020-04-22 17:46:35 · 166 阅读 · 0 评论 -
volatile 关键字分析
Volatile 关键字分析Volatile 关键字的作用是变量在多个线程之间可见,但不保证原子性。被volatile修饰的共享变量:它会保证修改的值会立即被更新到主存,当有其他线程需要读取时,它会去内存中读取新值。未被volatile修饰的共享变量:不能保证可见性,因为普通共享变量被修改之后,什么时候被写入主存是不确定的,当其他线程去读取时,此时内存中可能还是原来的旧值,因此无法保...原创 2020-03-06 15:39:35 · 232 阅读 · 0 评论 -
Java多线程(1)—— 进程与多线程的概念、多线程的优点
Java多线程技能Java多线程的学习起始是理解Thread类中的核心方法,需要掌握如下关键:线程的启动如何使线程暂停如何使线程停止线程的优先级线程安全相关性问题1.1、进程与多线程的概念、多线程的优点1.1.1、进程与多线程的概念进程:是受操作系统管理的基本运行单元。线程:可理解为在进程中独立运行的子单元。1.1.2、多线程的优点示例:任务1是等待远程服务器返回数...原创 2018-10-10 17:32:10 · 612 阅读 · 0 评论 -
Java多线程(2)—— 线程实现之继承Thread类
1.1、使用多线程一个进程在运行时至少会有1个线程在运行,线程会在后台执行;例如调用public static void main() 方法的线程就是如此,而且由JVM创建。package test;public class Test{ public static void main(String[] args){ System.out.println(Thread.currentTh...原创 2018-10-10 20:55:01 · 482 阅读 · 0 评论 -
Java多线程(3)—— 线程实现之实现Runnable接口
实现Runnable接口因为Java的单根继承特性,需要Runnable来实现类多继承的实现。package com.myRunnable;/** * 创建一个实现Runnable接口的类 * @author admin */public class MyRunnable implements Runnable{ @Override public void run() { ...原创 2018-10-10 21:33:08 · 544 阅读 · 0 评论 -
Java多线程(4)—— 实例变量与线程安全
实例变量多线程中实例变量的两种情况:不共享数据:每个线程访问各自的实例变量。共享数据:多个线程访问同一个变量。不共享数据package com.myThread;/** * 线程继承类 * @author admin */public class MyThread extends Thread { private int count = 5; public MyThre...原创 2018-10-11 10:08:46 · 1324 阅读 · 0 评论 -
Java多线程(5)—— currentThread()、isAlive()、sleep()、getId() 方法
currentThread() 方法currentThread() 方法可返回代码段正在被哪个线程调用的信息。package com.myThread;/** * 线程继承类 * @author admin */public class MyThread extends Thread{ public MyThread() { System.out.println("构造方法的打...原创 2018-10-11 11:33:40 · 2068 阅读 · 0 评论