这是一道关于java共享互斥练习题,虽然只有一道题目,但是想完成做对这道题,也是不容易的,因为里面涉及和包含的知识还是不少的,好了费话不多说,咱们看题目。
假设现在如下面一样声明Something类,变量x,y则表示 Something类的不同实例。请详阅下面的组合,若该组合可供1个以上的线程同时执行,则打√;若该组合不允许1个以上的线程同时执行,则打×。
public class Something {
public void iA () ()
public void iB () ()
public synchronized void iSyncA () ()
public synchronized void iSyncB () ()
public static void cA () ()
public static voici cB () ()
public static synchronized void cSyncA) ()
public static synchronized void cSyncB() ()
}
√(1)x.iA();
与
x.iA();
只要是synchronized以外的方法,都可以从两个线程执行。
√(2)x.iA();
与
x.iA();
只要是synchronized以外的方法,都可以从两个线程执行。
√(3)x.iA();
与
x.iSyncA();
只要是synchronized以外的方法,都可以从两个线程执行,即使有线程在执行其synchronized方法,也仍能执行。
( 4 ) x.iSyncA();
与
x.iSyncA();
相同实例的 synchronized 的实例方法, 次只能由 个线程来执行
×(5)x.iSyncA();
与
x.iSyncB();
相同实例的 synchronized 的实例方法,一次只能由一个线程来执行
√( 6 ) x.iSyncA();
与
y. iS cA()
由于实例不同则锁定不同,因此即使是 synchronized 的实例方法,也能从两个以上的线程来同时执行
(7)x.iSyncA();
与
x.iSyncB();
由于实例不同则锁定不同,因此即使是 synchronized 的实例方法,也能从两个以上的线程来同时执行。
√( 8 ) x.iSyncA();
与
something.cA();
类方法本来就不是 synchronized 方法,因此可以同时执行。
√( 9 ) x.iSyncA();
与
something.cSyncA();
synchronized 实例方法与 synchronized 类方法由于锁定不同,因此可以从数个线程来同时执行。
×( 10 ) Something.cSyncA();
与
Something cSyncA();
nchronized 的类方法无法从数个线程同时执行
×(11)Something.cs 1cA()
与
Something cSyncB();
Synchronized的类方法无法从数个线程同执行。
×( 12 ) x.cSyncA();
与
y.cSyncB();
x. cSyncA ()调用的方法是 Something cS ncA(),而y.cSyncB()调用的方法是Something cSyncB () ,因此都会变成 Synchronized 类方法,所以无法从数个线程同时执行。
看完以上java共享互斥练习题你明白了吗,好吧,反正我不明白,哎呀开个玩笑,希望这道关于java共享互斥练习题让java程序员们能够认识共享互斥,并不断的学习。
HelloWorld10-31 08:24
军哥08-12 23:29
江湖人称小李白12-10 10:41
IT逐梦者08-17 21:43
HelloWorld11-06 11:19