自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 嵌套管程锁死和Slipped Condition

参考URL:Java并发性和多线程介绍 1.嵌套管程锁死,类似于死锁。死锁是两个线程相互锁死,嵌套死锁是一个线程释放了内部的锁而没有释放该类对象的锁,即锁有嵌套。2.Slipped Condition,当一个线程执行到某个条件的 时候,这个条件被其他线程改变了,。导致第一个线程在该条件下执行了错误的操作。...

2018-07-23 11:28:56 123

原创 饥饿和公平

参考URL:Java并发性和多线程介绍 1.饥饿,一直得不到cpu的时间。原因:线程的优先级、一直等待进入同步块、一直得不到唤醒。2.提高公平性,用锁代替同步块同步代码块不能保证线程是按次序执行的,公平是要每个线程都能执行,防止饥饿public class Synchronizer{ Lock lock = new Lock(); public void do...

2018-07-22 17:55:02 138

原创 避免死锁

参考URL:Java并发性和多线程介绍 1.按照顺序加锁,但是你必须事先知道可能会用到的锁和锁之间的顺序,有时候这个关系是难以预测的。2.给获取锁加超时时间,当没有获取到全部的锁,先释放获取到的一部分锁。加锁超时后可以先继续运行干点其它事情,再回头来重复之前加锁的逻辑。超时和重试机制是为了避免在同一时间出现的竞争,但当线程过多,同一时间也有可能会出现问题。3.死锁检测:当请求锁失败...

2018-07-22 16:28:02 113

原创 死锁

参考URL:Java并发性和多线程介绍 1.死锁:一个线程调用方法A锁住了对象1,另一个线程调用方法B锁住了对象2,方法A要使用对象2,而方法B又要使用对象1,那么它们相互等待锁,死锁发生。注意,两个线程需要同时调用才会死锁。例如,两个线程同时调用parent.addChild(child)和child.setParent(parent)方法,并且是同一个parent对象和同一个c...

2018-07-22 16:06:22 101

原创 Java ThreadLocal

参考URL:Java并发性和多线程介绍 1.初始化初始化ThreadLocal对所有线程可见,set()方法设置的值只对当前线程可见。private ThreadLocal myThreadLocal = new ThreadLocal<String>() { // 新建时覆写它的initialValue()方法,实现线程变量初始化,对所有线程都可见 @O...

2018-07-22 15:46:14 109

原创 线程通信

参考URL:Java并发性和多线程介绍 1.线程间通信,例如线程A通知线程B已经准备好了数据2.通过共享对象通信,设置boolean值3.忙等待,类似于偏向锁,等待然后自旋直到前一个线程执行结束4.wait(),notify()和notifyAll()以下是一个线程等待和唤醒的例子,doWait()等待,doNotify()唤醒。public class Monito...

2018-07-22 15:08:02 90

原创 Java同步块

参考URL:Java并发性和多线程介绍 1.有四种不同的同步块:实例方法、静态方法、实例方法中的同步块、静态方法中的同步块2.实例方法和静态方法同步语句的监视器对象不同。// 实例方法synchronized(this){ // 监视器this为实例对象}// 静态方法synchronized(MyClass.class){ // 监视器MyClass....

2018-07-20 16:29:35 178

原创 Java内存模型

参考URL:Java并发性和多线程介绍 1.堆栈存放:(1)一个本地变量可能是原始类型,在这种情况下,它总是“呆在”线程栈上;(2)一个本地变量也可能是指向一个对象的一个引用。在这种情况下,引用(这个本地变量)存放在线程栈上,但是对象本身存放在堆上。(3)一个对象的成员变量可能随着这个对象自身存放在堆上。不管这个成员变量是原始类型还是引用类型。(4)静态成员变量跟随着类定义...

2018-07-20 15:44:11 94

原创 线程安全及不可变性

参考URL:Java并发性和多线程介绍 1.创建不可变的共享对象保证对象在线程间共享时不会被修改public class ImmutableValue {// 创建一个没有set方法的不可变的共享对象,即ImmutableValue类 private int value = 0; public ImmutableValue(int value) {// 使用构造函数初始化va...

2018-07-20 10:32:34 132

原创 线程安全与共享资源

参考URL:Java并发性和多线程介绍 1.线程控制逃逸规则:如果一个资源的创建、使用、销毁都是在同一个线程里面完成,并且不会逃离该线程的控制,那么它就是线程安全的。2.基本类型的局部变量是线程安全的。3.局部的对象引用:该对象不会逃离该线程(该方法)的控制,即对象在该方法以外不会被引用也不会被操作,例如不会被其他方法获得,不会被非局部变量引用。4.对象成员:两个线程使用同一个...

2018-07-20 10:05:55 118

原创 竞态条件与临界区

参考URL:Java并发性和多线程介绍目录 1.竞态条件:两个或多个线程竞争同一个资源,并且对执行的先后顺序敏感的时候,就存在竞态条件。2.临界区:产生竞态条件的代码区就是临界区。3.在临界区使用同步可以避免竞态条件。...

2018-07-20 09:27:06 228

原创 创建并运行Java线程

参考URL:Java并发性和多线程介绍目录 1.Java线程类也是一个Object类,编写线程运行时执行的代码有两种方式:(1)新建一个继承了Thread父类的线程类,如MyThread extends Thread,重写MyThread的run方法,调用start方法执行该线程。(2)新建一个实现了Runabble接口的实例类,如MyRunnable implements Run...

2018-07-19 17:22:17 352

原创 并发编程模型

参考URL:Java并发性和多线程介绍目录 1.并发模型类似于分布式系统架构,通常可以互相借鉴思想。例如,为工作者们(线程)分配作业的模型一般与分布式系统中的负载均衡系统比较类似。2.三个并发模型:(1)并行工作者:线程间共享数据比较困难,每个线程都是无状态的,每次获取共享数据都需要重新读入数据;任务的顺序是不确定的。(2)流水线模型:每个线程是有状态的。其中的Chan...

2018-07-19 16:25:48 155

空空如也

空空如也

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

TA关注的人

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