自定义博客皮肤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 132

原创 线程安全之可见性

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

2019-11-11 00:34:13 101

原创 JAVA线程池应用

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

2019-11-11 00:33:54 229

原创 线程封闭

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

2019-11-11 00:32:57 77

原创 线程通信

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

2019-11-11 00:32:40 60

原创 中止线程的几种方式

线程中止不推荐的线程中止 -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 236

原创 线程状态

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

2019-11-11 00:32:03 97

原创 JVM运行时数据区

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

2019-11-11 00:31:38 85

原创 内存屏障和CPU缓存

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

2019-11-11 00:30:37 74

空空如也

空空如也

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

TA关注的人

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