自定义博客皮肤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)
  • 问答 (2)
  • 收藏
  • 关注

原创 wiki、conflunce、Blog、门户、论坛、知识库、CMS

wiki、conflunce、Blog、门户、论坛、知识库、CMS,概念理解

2021-12-08 11:28:34 443 1

原创 线程通信

线程通信:线程之间的协同,如线程执行先后顺序、获取某个线程执行的结果等。分为4类; 文件共享 线程1写入某个文件,线程2读取这个文件 网络共享 类似于文件共享 共享变量 线程1写入某个公共变量,线程2读取这个公共变量 JDK提供的线程协调API (1)suspend/resume(Thread类) 已弃用,原因是容易写出死锁的代码。在同步代码块中使用,不释放锁,容易死锁;suspend比res...

2020-01-29 14:43:28 163

原创 J.U.C包之Lock接口及其实现

锁的本质 锁是对资源的一种保护和约束,抢锁是获得使用资源的资格。 锁的实现原理: 维护一个状态值,通过CAS操作这个状体值,操作成功得到锁,操作失败进行自旋。如轻量级锁自旋,线程是Runable状态;重量级锁自旋,线程进入entryList,是blocked状态。 Lock接口 lock():获取锁(不死不休) tryLock():获取锁(浅尝则止) tryLock(long time, Time...

2020-01-19 21:50:57 248

原创 线程安全之可见性问题

JMM对于同步规则的定义: 对volatile变量v的写入,与所有其他线程后续对v的读同步 对监视器m的解锁,与所有后续操作对于m的加锁同步 理解:后续的加锁操作内容,能够看到解锁前的线程对于共享变量的修改。 对每个属性写入默认值(0,false,null),与每个线程对其进行的操作同步 理解:一个线程创建了有默认值的对象,后面其他线程可能读不到这个对象设置的默认值,但一定会读到初始值,而不会读...

2020-01-15 22:53:31 158

原创 线程安全之原子性问题

原子性问题: 1.线程读的某个变量值失效 即t1时刻读的值,在t2时刻已经被其他线程更改 2.某个判断条件失效 即t1时刻判断条件,在t2时刻已经被其他线程更改 解决: 将多个线程按照有序的方式顺序执行 synchronized(互斥锁) ReentrantLock(互斥锁) AtomicInterger等原子类(CAS) CAS: 属于硬件同步原语,处理器提供了基本内存操作的原子性保证 理解...

2020-01-15 22:53:21 232

原创 内存屏障和CPU缓存

1.CPU缓存 为了提高程序运行的性能,现代CPU在多方面对程序进行了优化。例如,利用CPU高速缓存,尽可能避免处理器访问主内存的时间开销,以提高性能。 ...

2020-01-01 14:39:42 235

原创 线程中止

不正确的方式 Stop:中止线程,并且清除监控器锁的信息,但是可能导致线程安全问题,JDK不推荐使用 Destroy:JDK并没有实现该方法 以下代码: package com.study.hc.thread.chapter1.thread; public class StopThread extends Thread { private int i = 0, j = 0; @O...

2020-01-01 09:47:30 119

原创 线程状态

1. 线程状态 线程有6个状态,在Java中通过Thread下的一个枚举类Java.lang.Thread.State可以获取,分别是: New:处于新建且还未启动的线程状态 Runnable:线程就绪状态 Blocked:线程阻塞等待监视器锁定的线程状态,一般都处于等待锁状态 Waiting:线程等待状态,需要由其他线程唤醒,如生产者-消费者模型。 常见方法,Object.wait()、Thre...

2019-12-30 20:42:34 123

原创 Java程序运行原理分析

1. JVM 简介 java源码被编译器成class字节码,然后由JVM运行的时候进行处理,下面一部分主要是JVM根据不同的操作系统进行的适配。 线程独占:每个线程都会有它独立占据的空间,随线程生命周期而创建和销毁 线程贡献:所有线程都能访问这块内存数据,随虚拟机或者GC创建和销毁 方法区:用来存储加载的类的信息、常量、静态变量、编译后的代码等东西的。方法区在1.7以前把它叫做永久代,1.8之后...

2019-12-30 20:17:15 224

空空如也

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

TA关注的人

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