java
文章平均质量分 65
limin0983
学习图像处理中
展开
-
线程安全与锁优化
1.1 java中的线程安全线程安全是限定在多个线程之间存在共享数据访问前提下的,按照线程安全的安全程度,各种操作的共享数据可以分为:不可变、绝对线程安全、相对线程安全、线程兼容和线程对立。线程安全的实现方法:同步和锁机制(1)互斥同步:是常见的一种并发正确性保障手段。同步是指子啊多个线程访问共享数据时,保证数据在同一时刻只能被一个(或一些线程,在使用信号量的时候)线程使用。而原创 2017-05-02 22:31:06 · 232 阅读 · 0 评论 -
synchronized同步方法2
接上一篇synchronized同步方法关键字synchronized取得的锁都是对象锁,而不是把一段代码或方法当作锁。对于多个线程同时执行一个对象的一个同步方法,哪个线程先执行带synchronized关键字的方法,哪个线程就持有了该方法所属对象的锁Lock,那么其他线程只能呈等待状态。2. 如何通过synchronized关键字解决脏读代码:package testSy原创 2017-04-24 15:50:37 · 243 阅读 · 0 评论 -
String字符串
public static void main(String[] args) { String str1 = "hello"; String str2 = "he"+"llo"; String str3 = "he"+new String("llo"); System.out.println(str1 == str2);//true System.out.println(str原创 2017-06-19 17:25:40 · 268 阅读 · 0 评论 -
单例模式与多线程
如何使单例模式遇到多线程使安全的,正确的。1.1单例模式之饿汉模式 饿汉模式(立即加载):就是使用类的时候已经将对象创建完毕,常见的实现办法就是直接new 实例化。 立即加载是在方法调用前,实例已经被创建了,实现代码如下:package testSingleton;public class MyObject { private static MyO原创 2017-04-26 11:47:40 · 266 阅读 · 0 评论 -
垃圾收集器
对于程序计数器、虚拟机栈、本地方法栈随着线程而生,随着线程而灭,在这几个区域内就不需要过多的考虑垃圾回收的问题,因为方法结束或线程结束后,内存自然就跟着收回了。而java堆和方法区则不一样,压机回收器所关注的也是这部分内存。1. 如何判断对象已死?1.1 引用计数算法 引用计数算法:给对象添加一个引用计数器,每当有一个地方引用它,计数器值就加1;当引用失效时,计数器值就减1;任何原创 2017-04-27 11:17:59 · 252 阅读 · 0 评论 -
单例模式与多线程2
接 单例模式与多线程1.6 使用static 代码块实现单例模式 由于静态代码块在类加载时就已经执行了,所以可以应用静态代码块的该特性来设计单例模式。package testSingleton2;public class MyObject { private static MyObject myObject = null; private MyObject(){} stat原创 2017-04-26 17:54:36 · 191 阅读 · 0 评论 -
InheritableThreadLocal类和ThreadLocal类
类ThreadLocal主要解决的就是:变量在不同线程间的隔离性,也就是每个线程拥有自己的值。InheritableThreadLocal类是ThreadLocal类的子类,使用InheritableThreadLocal 可以在子线程中取得父线程继承下来的值。注意:如果ThreadLocal存储的是不变性(immutable)的对象,如String,对于主线程设置的值子线程可以通原创 2017-04-25 18:05:45 · 247 阅读 · 0 评论 -
synchronized同步方法
多个对象多个锁package testSynchronized;public class Task { private int num = 0; synchronized public void addI(String username){ try{ if(username.equals("a")){ num = 100; System.out.println原创 2017-04-24 11:47:51 · 240 阅读 · 0 评论 -
Java并发容器和框架
1. ConcurrentHashMap ConcurrentHashMap是线程安全并且高效的HashMap。 1.1 为什么使用ConcurrentHashMap?(1) HashMap 是线程不安全的,在多线程环境下使用HashMap的put操作会使Entry链表形成环形数据结构,一旦形成环形数据结构,Entry的next指针将永远不为null,原创 2017-05-04 17:25:14 · 1206 阅读 · 0 评论 -
Volatile关键字
package volatileTest; public class RunThread extends Thread { private boolean isRunning = true; public boolean isRunning(){ return isRunning; } public void setRunning(bool原创 2017-08-08 21:52:54 · 204 阅读 · 0 评论