在访问资源时,有没有办法让一个线程优先于另一个线程?
答案 0 :(得分:3)
不,简单地说:没有意义。除非两个线程都试图在同一时间(非常罕见)获得资源,否则优先级将无济于事,除非具有更高优先级的线程可以“窃取”已经在使用的资源。
基本上你永远不会有多个项目在等待,那么什么用途是优先考虑的?有3个以上的线程,它具有逻辑意义,2个没有任何好处。
答案 1 :(得分:0)
可能是你可以使用Thread类的setPriority(int)
方法。
例如: -
Threadt = new Thread(this);
t.setPriority(Thread.NORM_PRIORITY);
答案 2 :(得分:0)
在线程类
中使用以下代码Thread threadB = new Thread(makeRunnable(), "threadB");
threadB.setPriority(2);
或访问以下链接 http://www.java2s.com/Code/Java/Threads/SetThreadPriority.htm
答案 3 :(得分:0)
如果我正确理解了您的问题,那么您正在寻求一种解决方案,如果具有高优先级的线程(H)想要访问资源,那么如果具有较低优先级的另一个线程(L)正在访问它,您想要阻止它或者让它释放资源。
如果是这种情况,那么你将不得不通过方法调用向L发送消息,或者线程L必须继续检查线程H可以设置的某个标志值,当它想要访问资源。然后,线程L可以释放资源并等待一段时间再尝试再次使用该资源。