java - 同时启动两个进程

标签 java android thread-synchronization

我需要同时运行两个进程。 我写了代码:

    public void starttwoprocessing () {
    final Thread tworunprocessing = new Thread(new Runnable() {
            public void run() {
            FlashLight.onFlashResume();
            handler.post(new Runnable() {
                public void run() {
                    camera.takePicture(null, null, photoCallback);                      
                }
            });
        }
    });
    tworunprocessing.start();
}

首先开始:

camera.takePicture(null, null, photoCallback);

第二个:

FlashLight.onFlashResume();

换地方后结果一样。 在这种情况下,我得到了第一张照片,闪光灯稍后启动。 Thread.sleep(...); 没有帮助

如何同时启动闪光灯,并立即拍照? 谢谢


这样写:

public class Launcher
{
    public void main(String args[]) throws IOException, InterruptedException
      {

        try {
        Process[] proc = new Process[2];
        proc[0] = new ProcessBuilder("FlashPreview.onFlashResumeStart()").start();
        Thread.sleep(3000);
        proc[1] = new ProcessBuilder("camera.takePicture(null, null, photoCallback)").start();

        try {
            Thread.sleep(3000);
        }
        catch (InterruptedException ex)
        {
        }
        proc[0].destroy();
        Thread.sleep(3000);
        proc[1].destroy();

    } catch (IOException ioe) {
        ioe.printStackTrace();
    }
      }
}

调用:

mk = new Launcher();
        try {
            mk.main(null);
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

我做错了什么。 根本不起作用,没有崩溃,但在日志中写道:07-05 16:38:58.217: W/System.err(30934): java.io.IOException: Error running exec()。命令:[FlashPreview.onFlashResumeStart()] 工作目录:null 环境:[ANDROID_SOCKET_zygote=9, SECONDARY_STORAGE=/storage/extSdCard:/storage/UsbDriveA:/storage/UsbDriveB:/storage/UsbDriveC:/storage/UsbDriveD:/storage/UsbDriveE:/storage/UsbDriveF, ANDROID_BOOTLOGO=1, EXTERNAL_STORAGE=/storage/sdcard0, ANDROID_ASSETS=/system/app, PATH=/sbin:/vendor/bin:/system/sbin:/system/bin:/system/xbin, ASEC_MOUNTPOINT=/mnt/asec, LOOP_MOUNTPOINT=/mnt/obb, BOOTCLASSPATH=/system/framework/core.jar:/system/framework/core-junit.jar:/system/framework/bouncycaSTLe.jar:/system/framework/ext.jar:/system/framework/framework.jar:/system/framework/framework2.jar:/system/framework/framework_ext.jar:/system/framework/android.policy.jar:/system/framework/services.jar :/system/framework/apache-xml.jar:/system/framework/sec_edm.jar:/system/framework/seccamera.jar, ANDROID_DATA=/data, LD_LIBRARY_PATH=/vendor/lib:/system/lib, ANDROID_ROOT=/系统, ANDROID_PROPERTY_WORKSPACE=8,66560, VIBE_PIPE_PATH=/dev/pipes]

最佳答案

即使使用线程,您的进程也会在其他进程之后运行。使用线程意味着第二个进程无需等待第一个进程完成。但是如何同时触发两个进程的最简单方法是使用 timeout or ProcessBuilder

在第一个过程中运行第二个过程也是个好主意。至于我,这是最好的解决方案。

附言女贞, ne chasto yvidiw zdes svoih s ykrainu)))

关于java - 同时启动两个进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17488689/

相关文章:

c# - 阻止函数并等待事件 C#

java - 如何使用等待队列监视器实现简单的线程同步

java - java中的pl/sql varchar2类型是什么?

java - MySQL > java.sql.SQLException : Plugin '*765C23FCC8127A2234DBCFB6E5207D82ED86264E' is not loaded

android - API 19 ScrollView 没有动量

c++ - CMutex::Lock 与 CSingleLock::Lock

java - 在保存的 txt 文件中排列文本

java - 在不迭代的情况下在 HashMap 中获取整数

android - 如果我的 Android Studio 的空 Activity 没有生成布局文件,我该怎么办?

android - 从最大拉伸(stretch)中停止空 ConstraintLayout