摘要: package com.LearnJava.Thread; import java.util.concurrent.Callable; import java.util.concurrent.ExecutionException; import java.util.concurrent.Future 阅读全文
posted @ 2020-02-08 19:35 超级学渣渣 阅读(978) 评论(0) 推荐(0) 编辑
摘要: 思路: 生产者判读是否大于20: 若 否,则生产一个产品并且唤醒(消费者).若是,则堵塞. 消费者判读是否大于0,若是,则消费一个产品,并唤醒(生产者).若否,则堵塞. 我们将生产和消费的方法,放到店员类,这样可以操作共享数据. package com.LearnJava.Thread; class 阅读全文
posted @ 2020-02-08 16:58 超级学渣渣 阅读(160) 评论(0) 推荐(0) 编辑
摘要: 相同: 都可以堵塞当前线程 不同: 1) 声明位置不同.sleep是Thread的静态方法;wait()是Object类的实例方法 2) 调用要求不同.sleep可以直接调用,wait()必须在synchronized代码块或方法中调用 3) 对同步监视器的控制不同: sleep不释放同步监视器,w 阅读全文
posted @ 2020-02-08 16:04 超级学渣渣 阅读(182) 评论(0) 推荐(0) 编辑
摘要: wait() notify() notifyAll() 1 只能用于synchronized 同步代码块和同步方法中 2 这几个方法的调用者,必须是同一个同步监视器 package com.LearnJava.Thread; import java.util.concurrent.locks.Ree 阅读全文
posted @ 2020-02-08 15:54 超级学渣渣 阅读(108) 评论(0) 推荐(0) 编辑
摘要: 阅读全文
posted @ 2020-02-08 15:53 超级学渣渣 阅读(195) 评论(0) 推荐(0) 编辑
摘要: 需手动加锁和释放. package com.LearnJava.Thread; import java.util.concurrent.locks.ReentrantLock; /* 同步代码块 synchronized(同步监视器){ //需要同步的代码 } 同步监视器:俗称 锁,可以是任何实例化 阅读全文
posted @ 2020-02-08 15:35 超级学渣渣 阅读(233) 评论(0) 推荐(0) 编辑
摘要: 阅读全文
posted @ 2020-02-08 15:34 超级学渣渣 阅读(74) 评论(0) 推荐(0) 编辑
摘要: 同步方法,仍然后有线程锁. 1 对于非静态方法,线程锁(同步监视器)是this 2 对于静态方法,线程锁是该类. package com.LearnJava.Thread; /* 同步代码块 synchronized(同步监视器){ //需要同步的代码 } 同步监视器:俗称 锁,可以是任何实例化的类 阅读全文
posted @ 2020-02-08 15:04 超级学渣渣 阅读(292) 评论(0) 推荐(0) 编辑
摘要: package com.LearnJava.Thread; /* 同步代码块 synchronized(同步监视器){ //需要同步的代码 } 同步监视器:俗称 锁,可以是任何实例化的类.但是需要共用同一个实例. */ class WindowSell implements Runnable{ Ob 阅读全文
posted @ 2020-02-08 12:11 超级学渣渣 阅读(747) 评论(0) 推荐(0) 编辑