java – 我们可以有一个弱线程吗?
作者:互联网
我们可以对正在运行的线程进行弱引用,以便在低性能CPU中终止吗?
我的意思是,做这样的工作吗?
WeakReference<Thread> ref = new WeakReference<Thread>(new Thread(){
public void run(){
while(true){ /* your code */ }
}
});
这样,我想要一个线程具有低优先级来执行,我的意思是当CPU性能为低并且CPU完全使用时,线程的执行会自动终止.
有些线程不具有高优先级,应该以低CPU性能中断和终止.
最佳答案:
这是通过您描述的方式中的弱引用无法实现的.本文很好地定义了弱引用,因此您可能对此感兴趣:weak reference
你需要解决两个问题,简单而不那么容易.
我不认为标准Java API中有任何内容.
简单的 – 终止“低”优先级线程:
实现所需行为的简单方法是根据应用程序规则将低优先级的Runnable实例注册到某种状态管理器.这些实例将实现某种stop()和optionaly pause()和resume()行为,并将其暴露给状态管理器,可以阻止某种信号上的所有实例.你可以简单地在run()循环中检查一些volatile布尔值.
不那么容易 – 确定CPU使用率
要么使用JNI,要么使用某种第三方库,例如:
How to monitor the computer’s cpu, memory, and disk usage in Java?
您可以通过步骤2定期检查资源消耗情况,如果确定通知状态管理器有任何可疑事情,则关闭低优先级任务.
标签:java,multithreading,weak-references 来源: https://codeday.me/bug/20190516/1115053.html