Java高并发程序设计2
2017-10-24 本文已影响0人
xinxinlimin
本章主要学习下Object下针对线程的wait与notify、notifyAll方法。
前言:
thread作为线程类,主要有start、run、yield、join、interrupt等方法。而wait与notify虽然保护其中,但是继承自object,所以不能算是线程方法。
上文讲了多个线程协作,以及协作的处理,主要用到thread的方法。本节针对监听器(锁)而言,是解决线程同步问题。wait释放锁,sleep不会释放锁。
开始:
假设有个银行类,内含取钱与存取两个方法。同时有成员变量money。主类中建立两个线程t1、t2访问(共三个线程)。
wait表示当一个对象调用wait后(必须在锁内),当某个线程抢占锁进入后便释放锁(即释放这部分方法或者块让其他线程占有)。
notify表示通知对列(不公平)中的某一个(随机)启动占有资源(锁),一定注意:锁的是资源,跟线程没关系。
用法:




共四个类(一个实体sample类,一个减法线程类,一个加法线程类,一个主类)。
实现0101的数字游戏。wait与notify都会释放监听器。