当一个线程拥有对象锁时,其他线程也可以获取这个锁。
错
举一反三
- 调用object.wait()时,线程先要获取这个对象的锁,当前线程必须与锁对象保持同步,把当前线程添加到等待队列中,随后另一线程可以同步同一个对象锁来调用notify(),这样将唤醒原来等待中的线程,然后释放该锁
- 下列说法中错误的一项是______。 A: 当线程获得了某个对象的排他锁时,它可以独自访问该对象,而其他线程无法访问 B: 当线程获得了某个对象的排他锁时,它可以独自访问该对象,其他线程也可以通过某种策略访问 C: 临界区可以是一个方法 D: 程序中单独并发的线程可以对同一个对象进行访问
- 下列关于Synchronized说法正确的是 A: Synchronized加锁,锁的是一个对象 B: Synchronized加锁访问一个对象后,其它线程一定无法访问该对象 C: Synchronized加锁后,争用同一个锁的线程同时间只能有一个线程可以运行 D: 一个线程最多只能持有一个锁对象的互斥锁标记
- 面四个选项中,哪些是线程进入阻塞状态的原因? A: 线程试图获取某个对象的同步锁,而该锁被其它线程持有 B: 线程调用了另一个线程的join()方法 C: 当线程调用了一个阻塞式的IO方法 D: 线程调用了setDaemon(booleanb)方法
- 线程锁可以解决线程同步
内容
- 0
当wait()方法被调用时,当前线程会释放所持有的锁资源,但是一个线程获得了锁,即使调用sleep()方法进入休眠,也不会释放锁。
- 1
关于sleep()和wait()方法,以下描述错误的是( )。 A: sleep是线程类(Thread)的方法,wait是Object类的方法 B: sleep不释放对象锁,wait释放对象锁 C: sleep()中指定的时间是线程不会运行的最短时间,它不能保证该线程睡眠到期后就开始执行 D: wait后进入该对象的锁池,其他线程调用notify()方法并获取对象锁会进入运行状态
- 2
一旦线程调用条件上的await()方法,该锁将自动释放。一旦条件正确,线程将重新获取锁并继续执行。
- 3
下列情况中,不会使线程返回所持有的对象锁的是( )。 A: 当synchronized() 语句块执行完毕 B: 当调用了线程的suspend() 方法 C: 当synchronized() 语句块中出现异常 D: 当持有锁的线程调用wait() 方法
- 4
下面关于使用同步代码块描述正确的是( ) A: 同步代码块中的锁对象可以是任意类型的对象 B: 当多个线程共享的锁对象必须是唯一的 C: 锁对象的创建代码不能放到run()方法中 D: 当线程执行同步代码块时,首先会检查锁对象的标志位