在Java中同时运行两个任务的多线程
我有两个任务应该一起运行。 将数据保存到数据库的第一个任务。第二个任务是录制视频
目前,我为每个任务使用一个线程,并同时运行它
...
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,但我知道JavaSwing组件的EDT。CMIIW
多谢各位
# 1 楼答案
线程安全只是一个问题,当您希望将在特定线程中运行的对象与另一个线程一起使用时。这里不清楚您是否在这个2线程中使用共享对象!但是,如果您想使用某个共享对象,或者您想从文件或特定文件读写,您可以使用如下锁定对象:
您应该始终记住,您需要将尽可能小的线程放入同步部分,因为如果另一个线程到达同步部分,它将等待线程1完成同步块,这可能会破坏代码的性能