代码:wait-notify实现多线程协调

多线程都要读写的变量假设为:serverTime
A线程要做的:网络请求服务器时间,并在请求成功后赋值给serverTime
B线程要做的:直到网络返回时间,然后使用该时间,不然一直等待

A线程:
在网络请求返回的onSeccess方法中:

synchronized (lock) {
	serverTime = response.getCurrentTime(); // 获得网络请求的时间
	// 通知其他线程我这里ok了
	lock.notifyAll();
}

B线程:

new Thread(new Runnable() {
	@Override
	public void run() {
		synchronized (lock) {
			while (serverTime == 0) {
				try {
					lock.wait(500); //every 500ms release lock
				} catch (InterruptedException e) {
					e.printStackTrace();
				}
			}
			// Custom logic : use the serverTime
			Slog.d(TAG, "TimeStamp is " + serverTime);
		}
	}
}).start();
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值