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 – 我们可以有一个弱线程吗? - 代码日志