摘要: 1、尽量使用synchronized块,而不是使用synchronized方法,synchronized能保证更高的效率。 2、synchronized能保证互斥性和可见性。 3、在static上加synchronized是在class对象上加锁。在方法上加synchronized是在this上加锁 阅读全文
posted @ 2016-02-27 17:39 YDDMAX 阅读(151) 评论(0) 推荐(0) 编辑
摘要: 1、保证了long,double的读写的原子性 2、保证了可见性(数据直接从主存里面读),加锁的方式也能保证可见性 3、在使用的时候不能依赖其他的变量,包括自己。 阅读全文
posted @ 2016-02-27 17:34 YDDMAX 阅读(108) 评论(0) 推荐(0) 编辑
摘要: 1、不可以被中断 2、基本数据类型除了long和double之外,读其的读写都是原子的。如果设置long和double为volatile则也是原子的。 3、java现在有AutomicInteger等原子类。 4、我认为java多线程的原子性意味着两方面: 1、存在互斥机制 (long的访问实际上是 阅读全文
posted @ 2016-02-27 17:26 YDDMAX 阅读(187) 评论(0) 推荐(0) 编辑
摘要: 1、可以很细粒度的控制锁 2、支持设置请求锁的时间 3、支持设置请求锁的时候可以设置响应 阅读全文
posted @ 2016-02-27 17:12 YDDMAX 阅读(115) 评论(0) 推荐(0) 编辑
摘要: 1、Thread.suspend(),Thread.resume(),Thread.stop()方法都已经废弃了,因为可能导致死锁。 2、抛出InterruptedException将导致中断标识位复位 3、多线程编程一定要注意阻塞语句,阻塞一定不能长久的阻塞,应该能被interrupt,否则则可能 阅读全文
posted @ 2016-02-27 17:06 YDDMAX 阅读(473) 评论(0) 推荐(0) 编辑
摘要: 1、ThreadLocal用于将变量封锁在线程内,不会涉及到资源的竞争。 2、Threadlocal的原理: Thread里面含有ThreadLocalMap对象,也就是每个线程都有这么一个map。 ThreadLocalMap的key是ThreadLocal对象,value是泛型的值。 阅读全文
posted @ 2016-02-27 14:42 YDDMAX 阅读(135) 评论(0) 推荐(0) 编辑
摘要: 1、java有10个优先级,xp有7个,solaris则有2的31次幂个。一般建议不设置优先级,如果设置优先级的话,建议设置 Thread.MAX_PRIORITY; Thread.MIN_PRIORITY; Thread.NORM_PRIORITY;这三个优先级 1、任意时刻可以调用Thread. 阅读全文
posted @ 2016-02-27 11:57 YDDMAX 阅读(233) 评论(0) 推荐(0) 编辑