|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 minamikotori 于 2022-12-8 22:07 编辑
- class MyThread2 extends Thread{
- private static int ticket = 100;
- private ReentrantLock lock = new ReentrantLock();
- @Override
- public void run() {
- while (true){
- try {
- lock.lock();
- if (ticket > 0) {
- System.out.println(currentThread().getName() + ":" + ticket);
- ticket--;
- } else
- break;
- } finally {
- lock.unlock();
- }
- }
- }
- }
复制代码- public class LockTest {
- public static void main(String[] args) {
- MyThread2 myThread1 = new MyThread2();
- MyThread2 myThread2 = new MyThread2();
- MyThread2 myThread3 = new MyThread2();
- myThread1.start();
- myThread2.start();
- myThread3.start();
- }
- }
复制代码
为什么会出现3个100呢,而99到1都是正常的,使用实现Runnable方法的时候就是正常的
楼主尝试把lock改成static后发现就变正常了 应该是没有使用同一个锁的问题导致的
但是为什么没有static时,只有100会出现异常 其余数字仅出现一次
|
|