gpt4 book ai didi

java - 在 Java 中同时运行两个任务

转载 作者:行者123 更新时间:2023-11-30 11:30:34 25 4
gpt4 key购买 nike

我有两个任务应该一起运行。第一个任务是将数据保存到数据库中。第二个任务是录制视频。

目前我为每个任务使用一个线程,并同时运行它。

...
Thread insertDb = new Thread(new Runnable() {
@Override
public void run() {
// Insert to Database
setDataMediaVisit(thumbStr);
insertVisitRecord();
}
});

Thread capture = new Thread(new Runnable() {
@Override
public void run() {
if (getGraph().getState() == DSCapture.PREVIEW) {
getGraph().setCaptureFile("data/"+ CaptureController.getNoMr() +"/videos/"+videoStr, DSFilterInfo.filterInfoForProfile(new File("profiles/demo_profile800x570_WM8_VBR_100.prx")), DSFilterInfo.doNotRender(), true);
getGraph().record();
}

setData(CaptureController.getNoMr());
}
});

insertDb.start();
capture.start();
...

上面的代码线程安全吗?我想使用 EDT,但我知道 EDT 用于 Java Swing 组件。中美联合会

谢谢。

最佳答案

线程安全只是一个问题,您什么时候想将在特定线程中运行的对象与另一个线程一起使用。这里不清楚你是否在这 2 个线程中使用共享对象!但是,如果你想使用一些共享对象或者你想从文件或特定的黄油中读取和写入,你可以像这样使用锁定对象:

final Object lock = new Object();

// In thread 1
// TODO: do some process in thread on

synchronized(lock) {
// TODO: Put the result in somewhere that thread2 want to read it
}


// In thread 2
synchronized(lock) {
// TODO: get the result from the place that you put in thread 1
}

// TODO: do some process on thread 2 on the data

你应该永远记住,你需要尽可能小的同步,因为如果其他线程到达同步部分,它将等待直到线程 1 完成同步块(synchronized block),这会降低代码的性能

关于java - 在 Java 中同时运行两个任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17726010/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com