这一章节我们来讨论游戏,synchronized持有对象锁与类锁的不同点-两种锁是并行的东西,没有交集。1.同步持有对象锁或者类锁package com.ray.deepintothread.ch02.topic_3;
public class SynchInstance5 {
public static void main(String[] args) throws InterruptedE...
分类:
编程语言 时间:
2016-04-29 18:59:13
阅读次数:
249
1. 在HashTable中同步和如何实现HashMap的同步
1. 同步意味着在一个时间点只能有一个线程可以修改hash表,任何线程在执行HashTable的更新操作前都需要获取对象锁,其他线程则等待锁的释放。
2. HashMap可以通过Map m=Collection.synchronizedMap(new HashMap())来达到同步的效果。具体而言,该方法返...
分类:
编程语言 时间:
2016-04-28 10:41:44
阅读次数:
225
这一章节我们来讨论一下synchronized持有对象锁。1.当所有方法都不使用同步的时候代码清单package com.ray.deepintothread.ch02.topic_2;
public class SynchInstance1 {
public static void main(String[] args) throws InterruptedException {
MyT...
分类:
编程语言 时间:
2016-04-26 21:11:04
阅读次数:
285
这一章节我们来讨论游戏,synchronized持有对象锁与类锁的不同点-两种锁是并行的东西,没有交集。1.同步持有对象锁或者类锁package com.ray.deepintothread.ch02.topic_3;
public class SynchInstance5 {
public static void main(String[] args) throws InterruptedE...
分类:
编程语言 时间:
2016-04-26 21:08:43
阅读次数:
191
Override和Overload的含义去区别。
Interface与abstract类的区别
Static class 与non static class的区别。
java多态的实现原理
实现多线程的两种方法:Thread与Runable。
线程同步的方法:sychronized、lock、reentrantLock等。
锁的等级:方法锁、对象锁、类锁。...
分类:
编程语言 时间:
2016-04-21 18:38:17
阅读次数:
321
虽然多线程编程极大地提高了效率,但是也会带来一定的隐患。比如说两个线程同时往一个数据库表中插入不重复的数据,就可能会导致数据库中插入了相同的数据。今天我们就来一起讨论下线程安全问题,以及Java中提供了什么机制来解决线程安全问题。
[非static的使用的是对象锁,static的使用的是类锁]
以下是本文的目录大纲:
一.什么时候会出现线程安全问题?
...
分类:
编程语言 时间:
2016-03-26 07:06:42
阅读次数:
268
1.对象锁钥匙只能有一把才能互斥,才能保证共享变量的唯一性 2.在静态方法上的锁,和 实例方法上的锁,默认不是同样的,如果同步需要制定两把锁一样。 3.关于同一个类的方法上的锁,来自于调用该方法的对象,如果调用该方法的对象是相同的,那么锁必然相同,否则就不相同。比如 new A().x() 和 ne ...
分类:
其他好文 时间:
2016-03-24 01:18:57
阅读次数:
343
多线程的同步依靠的是对象锁机制,synchronized关键字的背后就是利用了封锁来实现对共享资源的互斥访问。参考自http://www.cnblogs.com/phinecos/archive/2010/03/13/1684877.html 实例说明:1.貌似同步,实际不同步的情况 package
分类:
编程语言 时间:
2016-03-04 16:22:23
阅读次数:
236
转自:http://ifeve.com/java-locks/ 建议参考:http://www.zhihu.com/question/28113814 Java类锁和对象锁实践 感谢[jiehao]同学的投稿,投稿可将文章发送到tengfei@ifeve.com 类锁和对象锁是否会冲突?对象锁和私有
分类:
编程语言 时间:
2016-02-28 22:55:02
阅读次数:
481
这一章节我们来讨论一下线程的状态。1.状态(1)新建状态(New):新创建了一个线程对象(2) 就绪状态(Runnable):线程对象创建后,其他线程调用了该对象的start()方法。该状态的线程位于可运行线程池中,变得可运行,等待获取CPU的使用权。(3) 阻塞状态(Blocked):当任务想获取对象锁,但是该锁被其他任务持有,该任务的状态是阻塞状态;当持有锁对象释放锁,然后该任务持有锁,此时该...
分类:
编程语言 时间:
2016-01-11 12:16:18
阅读次数:
172