symchronized和java.util.concurrent.locks.Lock的比较,描述正确的是()
第1题:
下列( )语句关于Java中内存回收的说明是正确的。
A.程序员必须创建一个线程来释放内存
B.内存回收程序允许程序员直接释放内存
C.内存回收程序负责释放无用内存
D.内存回收程序可以在指定的时间释放内存对象
第2题:
A.T 1
B .T 2
C .T 1和T 2
D .没有
第3题:
简述synchronized 和java.util.concurrent.locks.Lock的
异同?
主要相同点:Lock 能完成synchronized 所实现的所有功能
主要不同点:Lock 有比synchronized 更精确的线程语义和更好的性能。synchronized 会
自动释放锁,而Lock 一定要求程序员手工释放,并且必须在finally 从句中释放。Lock
还有更强大的功能,例如,它的tryLock 方法可以非阻塞方式去拿锁。
举例说明(对下面的题用lock 进行了改写):
package com.huawei.interview;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
public class ThreadTest {
/**
* @param args
*/
private int j;
private Lock lock = new ReentrantLock();
public static void main(String[] args) {
// TODO Auto-generated method stub
ThreadTest tt = new ThreadTest();
for(int i=0;i<2;i++)
{
new Thread(tt.new adder()).start();
new Thread(tt.new subtractor()).start();
}
}
private class subtractor implements Runnable
{
@Override
public void run() {
// TODO Auto-generated method stub
while(true)
{
/*synchronized (ThreadTest.this) {
System.out.println("j--=" + j--);
//这里抛异常了,锁能释放吗?
}*/
lock.lock();
try
{
System.out.println("j--=" + j--);
}finally
{
lock.unlock();
}
}
}
}
private class adder implements Runnable
{
@Override
public void run() {
// TODO Auto-generated method stub
while(true)
{
/*synchronized (ThreadTest.this) {
System.out.println("j++=" + j++);
}*/
lock.lock();
try
{
System.out.println("j++=" + j++);
}finally
{
lock.unlock();
}
}
}
}
}
第4题:
逍客在LOCK模式下行驶时,仪表上绿色的"AUTO"和黄色的"LOCK"指示灯会同时亮起。()
第5题:
锁(Lock)描述了数据项的状态,其作用是使()
第6题:
尽管已有话务,soft lock VMGW后,VMGW的状态先为LOCKED,等话务都释放后,状态再变成shut down.
第7题:
User Scott has updated the salary of one of the employees in the EMPLOYEES table and has not committed the transaction. What are the two types of locks that this scenario would lead to?()
第8题:
在大迎角和低速时抑制缝翼收回的是()
第9题:
第10题:
null lock on the row being updated
null lock on the table containing the row
ROW SHARE lock for the row being updated
ROW EXCLUSIVE lock for the row being updated
shared row-exclusive lock for the row being updated
a shareable table lock for the table containing the row
exclusive table-level lock for the table containing the row
第11题:
Lock不能完成synchronized所实现的所有功能
synchronized会自动释放锁
Lock一定要求程序员手工释放,并且必须在finally从句中释放
Lock有比synchronized更精确的线程语义和更好的性能
第12题:
(难度:中等)多线程安全问题的解决方案可以使用Lock提供的具体的锁对象操作
答案:(yes)
第13题:
Python标准库threading中的Lock、RLock、Condition、Event、Semaphore对象都可以用来实现线程同步。
此题为判断题(对,错)。
第14题:
A. 当一个goroutine获得了Mutex后,其他goroutine就只能乖乖的等待,除非该goroutine释放这个Mutex
B. RWMutex在读锁占用的情况下,会阻止写,但不阻止读
C. RWMutex在写锁占用情况下,会阻止任何其他goroutine(无论读和写)进来,整个锁相当于由该goroutine独占
D. Lock()操作需要保证有Unlock()或RUnlock()调用与之对应
第15题:
关于Java语言的内存回收机制,下列选项中正确的一项是______。
A.Java程序允许用户使用指针来释放内存
B.Java程序要求用户必须手工创建一个线程来释放内存
C.内存回收线程负责释放无用内存
D.内存回收线程不能释放内存对象
第16题:
Python标准库threading中的Lock、RLock、Condition、Event、Semaphore对象都可以用来实现线程同步。
第17题:
synchronized和java.util.concurrent.locks.Lock的比较,描述正确的是()
第18题:
下列哪些语句关于内存回收的说明是正确的()。
第19题:
(EMB145)为什么在飞行中,油门杆不能设置reverse(反推)位()
第20题:
关于DM性能视图说法正确的是()
第21题:
程序员必须创建一个线程来释放内存;
内存回收程序负责释放无用内存
内存回收程序允许程序员直接释放内存
内存回收程序可以在指定的时间释放内存对象
第22题:
Lock不能完成symchronized所实现的所有功能。
symchronized会自动释放锁。
Lock一定要求程序员手工释放,并且必须在finally中释放。
Lock比symchronized更精确的线程语义和更好的性能。
第23题:
对
错