自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(9)
  • 收藏
  • 关注

原创 JAVA安全之原子操作

可见性和原子性是导致线程安全问题的 主要原因 原子操作 原子操作可以是一个步骤,也可以是多个操作步骤,但是其顺序不可以被打乱, 也不可以被切割而只执行其中的一部分(不可中断性) 将整个操作视作一个整体,资源在该次操作中保持一致,这是原子性的核心特征。 CAS(Compare and swap) Compare and swap 比较和交换。属于硬件的同步原语,处理器提供了基本内存操作的原子性保证。...

2019-11-11 00:34:32 156

原创 线程安全之可见性

JAVA内存模型详解 JVM运行时数据区 线程独占:每个线程都会有它独立的空间,随线程生命周期而创建和销毁 线程共享:所有线程能访问这块内存数据,随虚拟机或者GC而创建和销毁 java虚拟机规范:描述JAVA虚拟机规范 JVM JAVA语言规范:java的语法 和语言特性 java内存模型由java语言规范提出,描述Java语言特性。 JVM运行时数据区由java虚拟机规范提出,描述java进程...

2019-11-11 00:34:13 128

原创 JAVA线程池应用

–为甚么要用线程池? 线程是不是越多越好? 1、线程在java中是一个对象,更是操作系统的资源,线程创建、销毁需要时间。 如果创建时间+销毁时间>执行任务时间 就很不合算。 2、java对象占用堆内存,操作系统线程占用系统内存,根据jvm规范,一个线程默认 最大栈大小1M,这个栈空间是需要从系统内存中分配的。线程过多,会消耗很多的内存。 3、操作系统需要频繁切换线程上下文,影响性能。 –线程...

2019-11-11 00:33:54 283

原创 线程封闭

线程封闭 多线程访问共享可变数据时,涉及到线程间数据同步的问题。并不是所有时候, 都要用到共享数据,所以线程封闭概念就提出来了。 数据都被封闭在各自的线程之中,就不需要同步,这种通过将数据封闭在线程总 而避免使用同步的技术称为 线程封闭。 线程封闭具体的体现由:ThreadLocal、局部变量。 –ThreadLocal 是java里一种特殊的变量。 它是一个线程级别变量,每个线程都有一个Th...

2019-11-11 00:32:57 117

原创 线程通信

** 通信的方式 ** 要想实现多个线程之间的协同,如:线程执行先后顺序、获取某个线程执行的结果等等。 涉及到线程之间相互通信,分为下面四类: 1) 文件共享 2) 网络共享 3) 变量共享 4) jdk提供的线程协调API 细分为:suspend/resume、wait/notify、park/unpark 线程协作 - JDK API JDK中对于需要多线程协作完成某一任务的场景,提供了对应A...

2019-11-11 00:32:40 79

原创 中止线程的几种方式

线程中止 不推荐的线程中止 -stop Stop:中止线程,并且清除监控器锁的消息,但是可能导致线程安全问题,JDK不建议使用。 public class StopThread extends Thread{ private int i=0,j=0; @Override public void run() { synchronized (this) { //增加同步锁,确保线程安全...

2019-11-11 00:32:23 285

原创 线程状态

线程状态 6个状态定义:java.lang.Thread.State New:尚未启动的线程的线程状态。 Runable:可运行线程的线程状态,等待CPU调度。 Blocked:线程阻塞等待监视器锁定的线程状态。 处于synchronized同步代码块或方法中被阻塞。 Waiting:等待线程的线程状态。 非超时(Object.wait、Thread.join、LockSupport.par...

2019-11-11 00:32:03 121

原创 JVM运行时数据区

JVM运行时数据区 **线程独占:**每个 线程都会有独立的空间,随线程生命周期而创建销毁 **线程共享:**所有线程都能访问这块内存数据,随虚拟机或者GC而创建销毁 线程共享部分 方法区:JVM用来存储加载的类信息、常量、静态变量、编译后的代码数据等。虚拟机规范中这是一个逻辑区域。 堆内存:堆内存可细分为:老年代、新生代(Eden、Form Survivor、To Surrvivor)。...

2019-11-11 00:31:38 103

原创 内存屏障和CPU缓存

** CPU性能优化手段 -缓存 ** 为了提高程序运行的性能,现代CPU在很多方面对程序进行了优化。 例如:CPU告诉缓存。尽可能的避免处理器访问主内存的时间开销,处理器大多会利用缓存(cache)以提高性能。 多级缓存 L1 Cache(一级缓存)是CPU第一层告诉缓存,分为数据缓存和指令缓存。一般服务器CPU的 L1缓存的容量通常在32-4096KB. L2 Cache(二级缓存)由于L1级...

2019-11-11 00:30:37 95

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除