task 怎么用 java_java – 如何使用FutureTask或BackgroundTask实现.get功能?

(我希望你在上面的例子中用返回的值澄清)所以这是你的任务的几种单一解决方案。仔细观察新线程中的运行任务。你需要在后台执行你的行动ThreadPool ….

注意! (也希望你使用背景线程来澄清,例如,使用你的代码上面的函数.execute() – 不会启动新的线程,但只是把新的任务从BlockingQueue执行静态ThreadPool)

那么下一步是什么?

使用函数.get()来执行MainThread中的任务,您需要在当前操作循环中发布此任务。你会帮助Handler和Looper。并回答你的问题,你应该知道,你只有一个方法来完成这个任务。在后台线程中使用方法.execute()启动动作,并使用方法.get()启动新的任务给Handler。就这些!

如果你想知道一些实现的例子,有很多种解决方案。我刚刚发布单个使用Handler和HandlerThread来低估这个例子的工作。

public class MyLibrary extend HandlerThread {

private static Handler backgroundHandler;

private static Handler foregroundHandler;

private static MyLibrary myLibrary

private MyLibrary () {

super(MyLibrary.class.getSimpleName());

start();

}

public static MyLibrary getInstance() {

if (myLibrary == null) {

synchronized (MyLibrary.class) {

if (myLibrary == null) {

myLibrary = new MyLibrary();

}

}

}

return myLibrary;

}

public static WorkingTask with (Context context) {

//Just update, if there are null

if (foregroundHandler == null) {

foregroundHandler = new Handler(context.getMainLooper);

}

if (backgroundHandler == null) {

backgroundHandler = new Handler(getLooper);

}

return new WorkingTask();

}

public void getBackgroundHandler () {

return backgroundHandler;

}

public void getForegroundHandler () {

return foregroundHandler;

}

}

// ..........

public class WorkingTask {

private Runnable workingRunnable;

public performTask (Runnable run) {

this.workingRunnable = run;

return this;

}

public void execute () {

MyLibrary.getInstance().getBackgoundHandler()

.postRunnable(workingRunnable)

}

public void get () {

MyLibrary.getInstance().getForegroundHanlder()

.postRunnable(workingRunnable)

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当在使用Java中的FutureTask类时,可能会遇到java.util.concurrent.FutureTask.report内存溢出的问题。 FutureTaskJava中Executor框架的一部分,用于表示一个异步计算任务。在执行计算任务时,可能会出现内存溢出的情况,这通常是由于以下原因引起的: 1. 任务计算量过大:如果计算任务需要处理大量的数据或执行复杂的操作,可能会导致内存使用过多,进而导致内存溢出。 2. 内存泄漏:如果在任务执行过程中有未正确释放的资源或对象引用,那么这些未释放的资源可能会一直保存在内存中,最终导致内存溢出。 解决这个问题的方法如下: 1. 优化任务计算:检查计算任务的实现代码,尝试减少计算量或改进计算逻辑,以降低内存使用量。可以通过合理使用数据结构、循环和递归等技巧来减少内存占用。 2. 调整内存配置:如果计算任务确实需要较大的内存空间,可以调整Java虚拟机的内存配置参数。可以增加-Xmx和-Xms等参数,以提供足够的内存空间给计算任务使用。 3. 检查内存泄漏:通过使用Java内存分析工具,如Eclipse Memory Analyzer等,来检查任务执行期间是否存在内存泄漏。如果发现泄漏问题,需要修复代码,确保资源和对象在不再使用时能够正确释放。 综上所述,当出现java.util.concurrent.FutureTask.report内存溢出的情况时,我们可以通过优化任务计算、调整内存配置和检查内存泄漏等方法来解决该问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值