我有以下场景,我打算知道何时可以进行上下文切换。
场景1:java线程在对象上调用了wait,但该线程的时间片仍然存在。
场景2: - java线程正在等待数据库查询的结果,但该线程的时间片仍然存在。
场景3: - java线程正在等待数据库查询的结果,但该线程的时间片仍然完成。
场景4:-Java线程正在进行一些计算,但该线程的时间片仍然完成。
在上下文切换中可能发生的任何其他情况,但我错过了它?
我正在考虑使用这些场景来确定线程池大小是否可以大于Runtime.getRuntime.availableProcessors() 感谢
答案 0 :(得分:1)
如果某个帖子正在做某事,例如调用wait()
,这意味着时间片没有用完。如果线程因调用wait()
而被阻塞,或等待I / O结果(包括数据库结果),则不计算时间片。一旦线程解除阻塞并继续执行,它就会开始计数。如果时间片耗尽,这意味着该线程一直在运行并且没有以任何方式被阻止。
因此,您的方案分类不正确。