java并发
zenghuoan
这个作者很懒,什么都没留下…
展开
-
synchronized
synchronized修饰不同地方的不同效果1、修饰代码块:大括号括起来的代码,作用于调用的对象。2、修饰方法:整个方法,作用于调用的对象。3、修饰静态方法:整个静态方法,作用于所有对象。4、修饰类:括号括起来的部分,作用于所有对象。可见性---synchronizedJMM关于synchronized的两条规定:1、线程解锁前,必须把共享变量的最新值刷新到主内存...原创 2019-06-12 22:46:18 · 174 阅读 · 0 评论 -
发布对象
发布对象:使一个对象能够被当前范围职位的点代码所使用对象逸出:一种错误的发布。当一个队形还没构造完成是,就被其他线程所见原创 2019-06-13 16:31:38 · 294 阅读 · 0 评论 -
安全发布对象
1、在静态初始化函数中初始化一个对象引用2、将队对象的引用保存到volatile类型域或者AtomicReference对象中3、将对象的引用保存到某个正确构造对象的final类型域中4、将对象的引用保存到一个由锁保护的域中...原创 2019-06-13 16:45:21 · 144 阅读 · 0 评论 -
Java内存模型-同步八种操作
lock(锁定):作用于主内存的变量,把一个变量标识为一条线程单独占状态。unlock(解锁):作用于主内存的变量,把一个处于锁定状态的变量释放出来,释放的变量才可以被其他线程锁定。read(读取):作用于主内存的变量,把一个变量值从主内存传输到线程的工作内存中,以便随后的load动作使用。load(载入):作用于工作内存的变量,它把read操作从主内存中得到的变量值放入工作内存的变量...转载 2019-06-10 22:41:08 · 216 阅读 · 0 评论 -
Java内存模型-同步规则
1、如果要把一个变量从主内存中复制到工作内存,就需要按顺序的执行read和load操作,如果把变量从工作内存中同步回主内存中,就要按顺序地执行store和write操作。但java内存模型只要求上述操作必须按顺序执行,而没保证必须是连续执行。2、不允许read和load、store和write操作之一单独出现。3、不允许一个线程丢弃的最近assign的操作,即变量在工作内存中改变了之后必须...原创 2019-06-10 22:59:32 · 148 阅读 · 0 评论 -
并发的优势与风险
优势:1、速度:用时处理多个请求,响应更快;复杂的操作可以分成多个进程同时进行。2、设计:程序设计在某些情况下更简单,也可以更多的选择。3、资源利用:cpu能够在等待io的时候做一些其他的事情。风险:1、安全性:多线程共享数据时可能会产生于期望不符的结果。2、活跃性:某个操作无法继续进行下去时,就会发生活跃性问题。比如死锁、饥饿等问题。3、性能:线程过多会使得cpu频繁...原创 2019-06-10 23:19:08 · 419 阅读 · 0 评论