Java 是否可以创建每0.1秒运行一次的线程?后果是什么?

Java 是否可以创建每0.1秒运行一次的线程?后果是什么?,java,android,multithreading,Java,Android,Multithreading,我正在尝试创建一个每0.1秒运行一次的线程。 很多需要很短时间更新的应用程序动画-它们使用什么 用一个简单的定时器执行它将是一个好的解决方案?我想知道性能和CPU使用情况 我想创建我自己的动画,需要这种刷新,有什么最佳实践吗?如果你想在iOS中寻找解决方案作为NSTimer,那么这与 new Timer().scheduleAtFixedRate(new TimerTask() { @Override public void run

我正在尝试创建一个每0.1秒运行一次的线程。 很多需要很短时间更新的应用程序动画-它们使用什么

用一个简单的
定时器执行它将是一个好的解决方案?我想知道性能和CPU使用情况


我想创建我自己的动画,需要这种刷新,有什么最佳实践吗?

如果你想在iOS中寻找解决方案作为
NSTimer
,那么这与

new Timer().scheduleAtFixedRate(new TimerTask() {
                @Override
                public void run() {
                    // Your code here
                }
            }, 0, 100);

这将在run方法中每100毫秒+CPU时间触发一次,这取决于代码中的
currentRunLoop

我不知道iOS如何处理多个线程,但在Android中,你不能从后台线程触摸UI。重复的任务几乎总是以某种方式修改UI

假设iOS有一个允许修改UI的特殊循环,
currentRunLoop
就是这样(比较):

您需要在Android的主线程中安排事件。为此,您需要使用附加到该主线程的

要计划重复的任务,您最有可能使用
处理程序的
…Delayed
方法之一,延迟100ms,以期望的速率计划代码。您也可以选择使用一个无限运行,它已经做到了这一点

CountDownTimer timer = new CountDownTimer(Long.MAX_VALUE, 100) {

    @Override
    public void onTick(long millisUntilFinished) {
        // Do Something Here
    }

    @Override
    public void onFinish() { /* won't happen */ };
}
timer.start();
在这种情况下,你应该不要使用的一件事(我几乎从来没有在Android中找到它的有效用途)是因为它在后台执行代码。如果出于某种原因,您的重复任务需要在后台执行,例如http请求,您可以使用它。

尝试以下方法:

m_handler = new Handler().postDelayed(new Runnable(){

    @Override
    public void run() {
        //Do what you want
        m_handler.run();
    }

}, 100);

让我知道它是否适用于您。

正确的答案在很大程度上取决于您为什么希望每0.1秒运行一个方法,以及该方法的作用。要添加Commonware的答案,影响选择的因素是:1)您需要精确的0.1秒,还是至少0.1秒?2) 操作将消耗多少资源(包括CPU时间)?如果操作未在0.1秒内完成,则必须执行什么操作?应用程序已崩溃。。?你能提供stacktrace和reasonwhat吗?下面是代码:new Timer().scheduleAtFixedRate(new TimerTask(){@Override public void run(){circle.setX(circleX+10);circle.setY(circleY+10);}},0100);你们说应用程序崩溃了,所以崩溃通常会产生跟踪和原因。所以请提供这些信息。它只工作一次。@NirGofman它应该每100毫秒做一次,你能添加一些吗(Android)为您的问题编写代码,以便我们了解您是如何使用所有这些的?它给出了一个错误:m\u处理程序无法解析为变量,并且此错误:m\u处理程序无法解析您应该这样声明m\u处理程序:
handler m\u处理程序
steal not work's:类型不匹配:无法从布尔值转换为HandlerOk..正在尝试更改吗方法..为什么倒计时不适合你?你必须重复多少次这种方法?