猿问

主线程在wait(5秒)内不等待其他线程;

我正在使用 java 在 android studio 中的一个 android 应用程序中工作。


我正在创建一个带有一些参数的可运行对象。调用线程函数正在创建一个新线程,在创建这个新线程后,我希望主线程等待 4 秒(不会使 UI 崩溃)。它看起来无处不在,我似乎无法得到这个问题的答案


    Runnable runnable;

    runnable = new timedVisibility(calibratePointList,0,1,ok);

    callThreadFunction(runnable);

    try {

        Thread.currentThread().wait(4000);

    }

    catch (Exception e)

    {


    }

这是 callThreadFunction:


    Thread t1 = new Thread(runnable);

    t1.start();

    try {

        t1.join();

    }

    catch (Exception e)

    {

        System.out.println("Error caught");

    }


蓝山帝景
浏览 226回答 2
2回答

qq_笑_17

我不确定四秒钟后你想发生什么,但在 Android 中你可以使用Handler:Handler handler = new Handler();Runnable followUpAction = new Runnable() {    @Override public void run() { /* something to do after 4 seconds */ }};handler.postDelayed(runnable, 4000);您不想让 UI 线程等待后台线程完成。如果您想在后台线程完成后立即采取某些操作,您应该使用回调方案(传递一个Runnable或其他接口以及在后台线程完成时要执行的方法)。

慕森卡

如果您sleep()因为 UI 行为不想使用,请尝试使用Handler:new Handler().postDelayed(new Runnable() {    @Override    public void run() {        //Write your code here    }}, 4000); //Timer is in ms here.你在中间写的任何东西,它都会等待 4 秒或 4000 毫秒。无论如何,不建议等待电流Thread一段时间。
随时随地看视频慕课网APP

相关分类

Java
我要回答