对于由两个线程访问的共享资源,如何安排优先级



是否有办法在访问资源时给予一个线程优先于另一个线程?

不,简单地说:这没有意义。除非两个线程都试图在完全相同的时间获得资源(非常罕见),否则优先级是没有用的,除非具有更高优先级的线程可以"窃取"已经在使用的资源。

基本上你不可能有多个项目等待,所以优先级有什么用呢?对于3+线程,这在逻辑上是有意义的,对于2个线程,这根本没有任何好处。

可以使用Thread类的setPriority(int)方法。

交货:

Threadt = new Thread(this);
t.setPriority(Thread.NORM_PRIORITY);

如果我正确理解你的问题,你正在寻求一个解决方案,如果一个线程(H)具有高优先级想要访问资源,那么如果另一个线程(L)具有较低的优先级正在访问它,你想要停止它或使它释放资源。

如果是这种情况,那么您将不得不通过方法调用向L发送消息,或者线程L将不得不继续检查线程H可以设置的一些标志值,当它想要访问资源时。然后,线程L可以释放资源并等待一段时间,然后再尝试使用该资源。

在线程类

中使用以下代码
Thread threadB = new Thread(makeRunnable(), "threadB");
threadB.setPriority(2);

或访问下面的链接http://www.java2s.com/Code/Java/Threads/SetThreadPriority.htm

最新更新