当我调用threadExecutor方法大数
时String
它将导致此错误提示, fun startAnimation(): Unit {
sPool.scheduleAtFixedRate(taskQu, 0, 1000, TimeUnit.MILLISECONDS)
}
是java ThreadExecutors
sPool
和val sPool = Executors.newScheduledThreadPool(2)!!
是异步计时器任务
taskQu
我得到了这个提示
val taskQu = object : TimerTask() {
override fun run() {
uihandler.obtainMessage().sendToTarget()
}
}
那么,关于这个问题的问题出现了吗?
答案 0 :(得分:1)
我使用下面的程序做了同样的事情并且工作正常:
public class ThreadExecutionTest {
/**
* @param args
*/
ScheduledExecutorService executor=Executors.newScheduledThreadPool(2);
public static void main(String[] args) {
// TODO Auto-generated method stub
ThreadExecutionTest test=new ThreadExecutionTest();
test.executeThread();
}
public void executeThread() {
Runnable task=()-> System.out.println("executing thread "+Thread.currentThread().getName() );
executor.scheduleAtFixedRate(task, 0, 1000, TimeUnit.MILLISECONDS);
}
}
你得到的异常是OutofMemoryError,因为在每秒之后都会创建多个线程,所以在某个时候之后它会抛出这个错误。 请检查您声明的位置" val sPool = Executors.newScheduledThreadPool(2)!!",如果在方法内部声明,则将其删除并在方法外声明它。(在类级别声明) 。