sleep和wait都是线阻塞,但是sleep在阻塞时不会释放锁,是不允许别的线程继续使用这个对象,但是wait是会释放对象锁的,可以供别的线程使用该对象,唤醒方式,sleep时间到了醒来,或者interruput()方法-à异常回到就绪状态,wait则需要使用notify,notifyAll()唤 ...
分类:
其他好文 时间:
2018-11-05 17:32:39
阅读次数:
136
最近读了高洪岩的《Java多线程编程核心技术》一书,打算记录下多线程的基础知识点,也算对本书的一个读后感了。目前打算分四五篇博文进行记录。 第一篇主要是记录线程的概念,创建,常用的基础方法等。 1. 什么是线程? 通常我们所说线程是进程的最小单位。那么问题来了,什么是进程呢?进程就是操作系统结构的基 ...
分类:
编程语言 时间:
2018-11-03 17:38:10
阅读次数:
197
1.getClass() public final native Class<?> getClass(); 获得的是变量实际的类型,比如 得到的输出结果是 hashmap。 getClass 获得的实际类型是Class<? extends |X|> 其中X是变量声明时的类型 2.hashCode() ...
分类:
编程语言 时间:
2018-10-29 16:55:34
阅读次数:
200
转自:https://www.cnblogs.com/skywang12345/p/3479224.html (含部分修改) 概要 本章,会对线程等待/唤醒方法进行介绍。涉及到的内容包括: wait(), notify(), notifyAll()等方法介绍 wait()和notify() wait ...
分类:
编程语言 时间:
2018-10-28 19:23:04
阅读次数:
215
在前面我们将了很多关于同步的问题,然而在现实中,需要线程之间的协作。比如说最经典的生产者-消费者模型:当队列满时,生产者需要等待队列有空间才能继续往里面放入商品,而在等待的期间内,生产者必须释放对临界资源(即队列)的占用权。因为生产者如果不释放对临界资源的占用权,那么消费者就无法消费队列中的商品,就 ...
分类:
编程语言 时间:
2018-10-25 15:41:21
阅读次数:
210
从https://www.cnblogs.com/toov5/p/9837373.html 可以看到他的打印是一片一片的,这边博客介绍怎么避免掉 使用notify 和 wait的时候 要注意 是在synchronize进行的,持有同一把锁 1.因为涉及到对象锁,他们必须都放在synchronized ...
分类:
其他好文 时间:
2018-10-23 20:57:36
阅读次数:
126
http://www.cnblogs.com/dolphin0520/p/3920385.html Java并发编程:线程间协作的两种方式:wait、notify、notifyAll和Condition 在前面我们将了很多关于同步的问题,然而在现实中,需要线程之间的协作。比如说最经典的生产者-消费者 ...
分类:
编程语言 时间:
2018-10-22 14:45:34
阅读次数:
185
一.简介HanlerThread就是一个封装了Loop的Thread,其他线程能够通过创建Handler传进去该Looper,与HandlerThread通信二.源码分析 1.因为其是一个Thread,所以可以从run方法看起 @Override public void run() { mTid =... ...
分类:
其他好文 时间:
2018-10-18 16:49:38
阅读次数:
215
1、Lock只是一个接口,基本开一个Lock就是开一个可重入锁: Lock lock = new ReentrantLock(); 2、wait(),wait(long timeout),notify(),notifyAll(),这些方法配合synchronized关键字一起使用可以实现等待/通知模 ...
分类:
编程语言 时间:
2018-10-17 14:36:11
阅读次数:
162
这两个方法来自不同的类分别是Thread和Object 最主要是sleep方法没有释放锁,而wait方法释放了锁,使得其他线程可以使用同步控制块或者方法(锁代码块和方法锁)。 wait,notify和notifyAll只能在同步控制方法或者同步控制块里面使用,而sleep可以在任何地方使用(使用范围 ...
分类:
编程语言 时间:
2018-10-16 02:12:10
阅读次数:
200