哪些叙述是正确的?(多选) A.一个线程A调用synchronized方法期间,其他线程也可以能成功调用这个synchronized方法。 B. wait()、notify()和notifyAll()都是Object类中的final方法,被所有的类继承、且不允许重写的方法。 C.一个线程在执行同步方法时,如果执行wait()方法,使本线程进入中断,就允许其它线程使用这个同步方法。 D.一个因执行wait方法进入中断状态的线程,需要其他线程执行notify()或notifyAll()通知它结束中断状态。
时间: 2023-05-15 22:05:13 浏览: 133
A. 一个线程A调用synchronized方法期间,其他线程不能成功调用这个synchronized方法。
B. wait()、notify()和notifyAll()都是Object类中的final方法,被所有的类继承、且不允许重写的方法。
C. 一个线程在执行同步方法时,如果执行wait()方法,使本线程进入等待状态,就允许其它线程使用这个同步方法。
D. 一个因执行wait方法进入等待状态的线程,需要其他线程执行notify()或notifyAll()通知它结束等待状态。
相关问题
静态 synchronized 方法和非静态 synchronized 方法之间的调用互斥么?
不互斥。静态 synchronized 方法和非静态 synchronized 方法使用的是不同的锁,因此它们之间的调用并不会产生互斥效果。静态 synchronized 方法使用的是类锁,而非静态 synchronized 方法使用的是对象锁。因此,即使一个线程正在调用静态 synchronized 方法,其他线程仍然可以同时调用非静态 synchronized 方法,反之亦然。
线程在等待synchronized加锁期间被中断会抛出异常吗?
是的,当一个线程在等待`synchronized`加锁期间被中断时,它会抛出`InterruptedException`异常。
当一个线程调用了另一个线程的`interrupt()`方法进行中断时,如果被中断的线程正处于等待`synchronized`锁的状态,它会被唤醒并抛出`InterruptedException`异常。这个异常通常用于中断线程的执行,并可以在异常处理代码中进行相应的处理逻辑。
需要注意的是,抛出`InterruptedException`异常并不会自动释放`synchronized`锁,而是需要在异常处理代码中手动释放锁。通常,在捕获到`InterruptedException`异常后,可以选择终止线程的执行或者通过其他逻辑来处理中断事件。
总结起来,线程在等待`synchronized`加锁期间被中断会抛出`InterruptedException`异常,开发人员可以根据需要对中断事件进行处理。
阅读全文