![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JAVA多线程
qq_27467003
网易云课堂学习笔记,其实我啥也不会
展开
-
JAVA安全之原子操作
可见性和原子性是导致线程安全问题的 主要原因原子操作原子操作可以是一个步骤,也可以是多个操作步骤,但是其顺序不可以被打乱,也不可以被切割而只执行其中的一部分(不可中断性)将整个操作视作一个整体,资源在该次操作中保持一致,这是原子性的核心特征。CAS(Compare and swap)Compare and swap 比较和交换。属于硬件的同步原语,处理器提供了基本内存操作的原子性保证。...原创 2019-11-11 00:34:32 · 144 阅读 · 0 评论 -
线程安全之可见性
JAVA内存模型详解JVM运行时数据区线程独占:每个线程都会有它独立的空间,随线程生命周期而创建和销毁线程共享:所有线程能访问这块内存数据,随虚拟机或者GC而创建和销毁java虚拟机规范:描述JAVA虚拟机规范 JVMJAVA语言规范:java的语法 和语言特性java内存模型由java语言规范提出,描述Java语言特性。JVM运行时数据区由java虚拟机规范提出,描述java进程...原创 2019-11-11 00:34:13 · 115 阅读 · 0 评论 -
JAVA线程池应用
–为甚么要用线程池?线程是不是越多越好?1、线程在java中是一个对象,更是操作系统的资源,线程创建、销毁需要时间。如果创建时间+销毁时间>执行任务时间 就很不合算。2、java对象占用堆内存,操作系统线程占用系统内存,根据jvm规范,一个线程默认最大栈大小1M,这个栈空间是需要从系统内存中分配的。线程过多,会消耗很多的内存。3、操作系统需要频繁切换线程上下文,影响性能。–线程...原创 2019-11-11 00:33:54 · 267 阅读 · 0 评论 -
线程封闭
线程封闭多线程访问共享可变数据时,涉及到线程间数据同步的问题。并不是所有时候,都要用到共享数据,所以线程封闭概念就提出来了。数据都被封闭在各自的线程之中,就不需要同步,这种通过将数据封闭在线程总而避免使用同步的技术称为 线程封闭。线程封闭具体的体现由:ThreadLocal、局部变量。–ThreadLocal是java里一种特殊的变量。它是一个线程级别变量,每个线程都有一个Th...原创 2019-11-11 00:32:57 · 104 阅读 · 0 评论 -
线程通信
**通信的方式**要想实现多个线程之间的协同,如:线程执行先后顺序、获取某个线程执行的结果等等。涉及到线程之间相互通信,分为下面四类:1) 文件共享2) 网络共享3) 变量共享4) jdk提供的线程协调API细分为:suspend/resume、wait/notify、park/unpark线程协作 - JDK APIJDK中对于需要多线程协作完成某一任务的场景,提供了对应A...原创 2019-11-11 00:32:40 · 68 阅读 · 0 评论 -
中止线程的几种方式
线程中止不推荐的线程中止 -stopStop:中止线程,并且清除监控器锁的消息,但是可能导致线程安全问题,JDK不建议使用。public class StopThread extends Thread{ private int i=0,j=0; @Override public void run() { synchronized (this) { //增加同步锁,确保线程安全...原创 2019-11-11 00:32:23 · 267 阅读 · 0 评论 -
线程状态
线程状态6个状态定义:java.lang.Thread.StateNew:尚未启动的线程的线程状态。Runable:可运行线程的线程状态,等待CPU调度。Blocked:线程阻塞等待监视器锁定的线程状态。 处于synchronized同步代码块或方法中被阻塞。Waiting:等待线程的线程状态。 非超时(Object.wait、Thread.join、LockSupport.par...原创 2019-11-11 00:32:03 · 107 阅读 · 0 评论 -
JVM运行时数据区
JVM运行时数据区**线程独占:**每个 线程都会有独立的空间,随线程生命周期而创建销毁**线程共享:**所有线程都能访问这块内存数据,随虚拟机或者GC而创建销毁线程共享部分方法区:JVM用来存储加载的类信息、常量、静态变量、编译后的代码数据等。虚拟机规范中这是一个逻辑区域。堆内存:堆内存可细分为:老年代、新生代(Eden、Form Survivor、To Surrvivor)。...原创 2019-11-11 00:31:38 · 95 阅读 · 0 评论 -
内存屏障和CPU缓存
**CPU性能优化手段 -缓存**为了提高程序运行的性能,现代CPU在很多方面对程序进行了优化。例如:CPU告诉缓存。尽可能的避免处理器访问主内存的时间开销,处理器大多会利用缓存(cache)以提高性能。多级缓存L1 Cache(一级缓存)是CPU第一层告诉缓存,分为数据缓存和指令缓存。一般服务器CPU的L1缓存的容量通常在32-4096KB.L2 Cache(二级缓存)由于L1级...原创 2019-11-11 00:30:37 · 87 阅读 · 0 评论