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