自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(10)
  • 资源 (8)
  • 收藏
  • 关注

原创 多线程七:关键字synchronized和volatile比较

volatile关键字  关键字volatile主要使用的场合是在多个线程中可以感知实例变量被更改了,并且可以获得最新的值使用,也就是用多线程读取共享变量时可以获得最新值使用。  关键字volatile提示线程每次从共享内存中读取变量,而不是从私有内存中读取,这样就保证了同步数据的可见性。  关键字volatile的主要作用是使变量在多个线程间可见  关键字volatile的作用是强制从公共堆栈中...

2018-07-10 14:04:27 224

原创 多线程六:死锁例子与排查

死锁产生情况:双方互相持有对方的锁的情况死锁示例代码:public class DealThread implements Runnable { public String username; public Object lock1 = new Object(); public Object lock2 = new Object(); public void setFlag(String ...

2018-07-10 14:02:54 365

原创 多线程五:synchronized同步代码块

使用synchronized的弊端A线程调用同步方法执行一个长时间的任务,那么B线程则必须等待比较长时间。synchronized同步代码块两个并发线程访问同一个对象object中synchronized(this)同步代码块时,一段时间内只能有一个线程被执行,另一个线程必须等待当前线程执行完这个代码以后才能执行该代码块。当一个线程访问object的一个synchronized同步代码块时,另一个...

2018-07-10 14:00:03 327

原创 多线程四:可重入锁

自己可以再次获取自己的内部锁。比如有1调线程获得了某个对象的锁,此时这个对象锁还没有释放,当其再次想要获取这个对象的锁的时候还是可以获取的,如果不可锁重入的话,就会造成死锁。可重入锁也支持在父类继承的环境中。(即子类锁中调用了父类带锁函数) 普通可重入锁示例代码:public class Service { synchronized public void service1() { Syst...

2018-07-10 13:57:48 307

原创 多线程三:脏读概念

在读取实例变量时,此值已经被其他线程更改过了,脏读一定会出现操作实例变量的情况下,这就是不同线程“争抢”实例变量的结果。

2018-07-10 13:54:39 453

原创 多线程二:停止线程方法

1.异常法:在想停止的地方,抛出个throw new InterruptedException();异常,出现异常锁自动释放。 2.在沉睡中停止:如果一个线程处于sleep状态时执行了interrupt方法后(即线程停止了)会出现异常停止 3.暴力停止:使用stop()方法直接就可以停止线程了,使用stop()方法释放锁会给数据造成不一致性的结果,这样可能会出现程序处理的数据遭到破坏,最终导致程序...

2018-07-10 13:53:54 173

原创 多线程一:创建线程的方式

1. 继承Thread类,重写run方法2. 实现Runnable接口,必须完成run函数使用方式:MyThreadImp 为实现的Runable类MyThreadImp myThreadImp = new MyThreadImp();Thread thread = new Thread(myThreadImp);...

2018-07-10 13:53:03 131

原创 jvm原理五:垃圾收集算法

1.标记-清除算法算法:分为“标记”和“清除”两个阶段。首先标记出所有需要回收的对象,在标记完成后统一回收所有标记的对象缺点:一是效率问题,标记和清除两个过程的效率都不高;另一个是空间问题,标记清除之后会产生大量不连续的内存碎片,空间碎片太多可能会导致以后在程序运行过程中需要分配较大对象时,无法找到足够的连续内存而不得不提前触发另一次垃圾回收动作。  2.复制算法算法:它将可用内存按容量划分为大小...

2018-07-10 13:42:34 122

原创 jvm原理四:利用可达性分析算法GC怎么判断对象生存还是死亡,经过了几次过滤,每次都做了什么

经历了2次标记过程,即2次过滤过程。第一次:如果对象在进行可达性分析后发现没有GC Roots相连接的引用链,那它将会被第一次标记并且进行一次筛选,筛选的条件是此对象是否有必要执行finalize()方法,当对象没有覆盖finalize()方法,或者finalize()方法已经被虚拟机调用过,虚拟机将这两种情况都视为没有必要执行。如果这个对象被判定为有必要执行finalize()方法,那么这个对象...

2018-07-10 13:41:35 629

原创 jvm原理三:判断对象是否存活算法

1.计数算法 给对象中添加一个应用计数器,每当有一个地方引用它时,计数器值就加1;当引用失效时,计数器值就减1;任何时刻计数器为0的对象就是不可能在被使用的。在主流的Java虚拟机里面没有选用引用计数算法来管理内存,其中最主要的原因是它很难解决对象之间相互循环引用的问题引用计数器缺陷的例子: objA = objBobjB = objA互相引用,引用计数器不为0,回收不了。2.可达性算法通过一系列...

2018-07-10 13:40:35 148

TortoiseSVN-1.9.5.27581-x64-svn-1.9.5.msi

64位svn:TortoiseSVN-1.9.5.27581-x64-svn-1.9.5.msi

2017-06-09

Swipe JS – 移动WEB页面内容触摸滑动类库

Swipe JS – 移动WEB页面内容触摸滑动类库

2017-05-14

apache-2.2.22-win32-x86-no_ssl.msi

apache-2.2.22-win32-x86-no_ssl.msi

2017-04-17

phpMyAdmin数据库

php数据库的使用方法在我的博客中,大家可以来我的博客看!!!

2017-04-17

springmvc与mybatis整合对数据库的增删改查

springmvc与mybatis整合对数据库的增删改查

2017-01-16

Junit 4.11

2016-12-28

图的操作(遍历,最小生成树等操作)

数据结构上的图的操作代码

2016-12-12

清华ACM常用代码

参加ACM的同学可以打印带着进行比赛,不参加的可以下下来进行研究

2016-10-08

空空如也

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

TA关注的人

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