首页 > 试题广场 >

有关线程的叙述正确的是()

[不定项选择题]
有关线程的叙述正确的是()
  • 可以获得对任何对象的互斥锁定
  • 通过继承Thread类或实现Runnable接口,可以获得对类中方法的互斥锁定
  • 线程通过使用synchronized关键字可获得对象的互斥锁定
  • 线程调度算法是平台独立的
A,“任何对象”锁定,太绝对了,你能锁住你没有权限访问的对象吗?
B,前半句话讲的是创建线程的方式,后半句讲的是锁定,驴头不对马嘴。
C,正确。
D,线程调度分为协同式调度和抢占式调度,Java使用的是抢占式调度,也就是每个线程将由操作系统来分配执行时间,线程的切换不由线程本身来决定(协同式调度)。这就是平***立的原因。
以上,选CD
发表于 2016-07-22 10:35:57 回复(38)
C选项有点文字游戏的意思,不过的确是对的:”线程通过调用对象(对象1)的synchronized方法可获得对象(对象2)的互斥锁定“,这里的两个对象是一样的,即对象1=对象2=synchronized方法的所属类的对象,所以的确是对的,因为对象1=对象2;”线程通过调用对象(对象1)的synchronized代码块可获得对象(对象2)的互斥锁定“第一个指有方法加了synchronized代码块的方法的对象, 第二个对象指synchronized(对象2)后面加的对象,当对象2是this的时候就和第一种解释没区别!

发表于 2016-09-05 15:42:11 回复(0)
C是错的 D才是正确的。 哪个对象有sync方法? sync是语言层面的关键字, 并非对象的方法好吧。线程调度是平***立的 ,由操作系统自行调度,不然jdk不会无法保证线程优先级的作用。
发表于 2015-11-23 09:47:50 回复(17)
一般线程调度模式分为两种——抢占式调度和协同式调度。抢占式调度指的是每条线程执行的时间、线程的切换都由系统控制,系统控制指的是在系统某种运行机制下,可能每条线程都分同样的执行时间片,也可能是某些线程执行的时间片较长,甚至某些线程得不到执行的时间片。在这种机制下,一个线程的堵塞不会导致整个进程堵塞。协同式调度指某一线程执行完后主动通知系统切换到另一线程上执行,这种模式就像接力赛一样,一个人跑完自己的路程就把接力棒交接给下一个人,下个人继续往下跑。线程的执行时间由线程本身控制,线程切换可以预知,不存在多线程同步问题,但它有一个致命弱点:如果一个线程编写有问题,运行到一半就一直堵塞,那么可能导致整个系统崩溃。  
java采用的是抢占式调度方式。
发表于 2018-03-09 16:08:37 回复(0)
线程的互斥锁机制:synchronized,lock,condition
Ref:http://blog.csdn.net/vking_wang/article/details/9952063
发表于 2015-10-11 15:46:31 回复(0)
谁给我解释下平***立是什么意思?
发表于 2016-03-24 16:02:22 回复(6)
关于选项D,我也翻了《深入理解java虚拟机》, 书中12.4.2中有提到JAVA使用得线程调度方式是抢占式调度。Java的线程是通过映射到 系统的原生线程上来实现的,所以线程调度最终还是取决于操作系统。我认为D不对啊,大家可以给一下你们的看法。
编辑于 2016-10-09 09:05:29 回复(4)
A错的,对象有不同的访问权限,只可以把有访问权限的对象作为互斥锁
发表于 2016-08-04 20:27:30 回复(0)
1.线程通过调用对象的synchronized方法可获得对象的互斥锁定。
2. 线程调度算法是平***立的。
3. 通过继承Thread类或实现Runnable接口来创建线程。
线程调度分为协同式调度和抢占式调度,Java使用的是抢占式调度,也就是每个线程将由操作系统来分配执行时间,线程的切换不由线程本身来决定(协同式调度)。这就是平***立的原因。

发表于 2016-12-22 16:06:43 回复(3)
C、synchronize保证可见性与原子性,而volatile只能保证变量的可见性,不保证变量的原子性;
D、线程调度分为协同式调度和抢占式调度,Java使用的是抢占式调度,也就是每个线程将由操作系统来分配执行时间,线程的切换不由线程本身来决定(协同式调度)。因此对于不同的平台不同的操作系统,线程调度的算法是不同的,因此线程调度算法是平***立的!
编辑于 2020-04-08 02:47:57 回复(0)
C,选项B,能否获得互斥锁和是否是一个线程是无关的,不是线程也可以获取到互斥锁
发表于 2015-10-10 16:26:18 回复(0)
排第一的同学对B选项的解释是错的。是因为获取的是对象的锁定而不是方法。
发表于 2020-06-09 22:07:02 回复(1)
选C。
关于D,线程调度算法依赖于具体平台调度算法的实现。
发表于 2018-03-01 19:36:14 回复(0)
线程调度分为协同式调度和抢占式调度, Java使用的是抢占式调度,也就是每个线程将由操作系统来分配执行时间,线程的切换不由线程本身来决定(协同式调度)。这就是平***立的原因。
发表于 2016-08-10 15:09:40 回复(0)
对象有访问权限,只可以对有访问权限的进行互斥锁定。
发表于 2021-12-23 13:47:58 回复(0)
线程的调度算法是独立的,因为线程的调度是由操作系统决定的,而不是由线程本身决定的
发表于 2018-10-31 23:46:33 回复(0)
A,“任何对象”锁定,太绝对了,你能锁住你没有权限访问的对象吗? D,线程调度分为协同式调度和抢占式调度,Java使用的是抢占式调度,也就是每个线程将由操作系统来分配执行时间,线程的切换不由线程本身来决定(协同式调度)。这就是平***立的原因。
发表于 2017-08-08 08:24:19 回复(1)
java中使用互斥锁有synchronized和ReentrantLock两种方式,第二种方式是jdk1.5之后出现,属于util.concurrent.locks.ReentrantLock
发表于 2016-07-15 19:18:37 回复(0)
线程调度算法有两种一种是协同式调度一种是抢占式调度,协同式调度由系统分配线程执行时间,是Java采用的方式,另一种抢占式则是接力棒式的顺序执行线程,由线程自己决定。
发表于 2023-06-05 16:53:27 回复(0)
A,“任何对象”锁定,太绝对了,你能锁住你没有权限访问的对象吗?
B,前半句话讲的是创建线程的方式,后半句讲的是锁定,驴头不对马嘴。
C,正确。
D,线程调度分为协同式调度和抢占式调度,Java使用的是抢占式调度,也就是每个线程将由操作系统来分配执行时间,线程的切换不由线程本身来决定(协同式调度)。这就是平***立的原因。
发表于 2021-10-30 16:20:07 回复(0)