需求是这样的,请求过来,先将所有的数据存下来,启动第二个线程去处理数据,主函数里面不关心第二个线程是否处理完成,直接返回成功,这样怎么写
你可以采取这样的操作:
YourData yourData;
boolean requestDeco(YourData yourData) {
//存一份
this.yourData = yourData;
//交给线程处理
new SecondThread(yourData).start();
//返回成功
return true;
}
class SecondThread extends Thread {
YourData yourData;
public SecondThread(YourData yourData) {
this.yourData = yourData;
}
@Override
public void run() {
//
// do secondThread
}
}
你开了线程,本来就不用等它完成了
没有啊,我试了一下,让线程sleep 10秒,主函数就等了10秒才返回的啊
map.put("batchList", batchList);
msgServiceMapper.batchSave(map); //先保存数据库
SendMsgThread send = new SendMsgThread(batchMessage, supplierModel);
send.run();
ResponseStatus responseStatus = ResponseStatus.Success;
msgServiceMapper.updateSendStatus(responseStatus.toString(), reqId);
return responseStatus;
你的主函数怎么写的贴出来看看
线程开启之后和原来的函数所在的线程就是并行的.
如果你的问题是主函数等待那么可能是你把sleep加到主函数的线程上面去了
你看如下代码
public static void main(String[] args) {
System.out.println(test2());
}
public static String test2() {
new Thread() {
public void run() {
System.out.println("thread1");
}
}.start();
new Thread() {
public void run() {
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("thread2");
}
}.start();
System.out.println("end");
return "OK";
}
```
执行结果是
thread1
end
OK
//几秒过后输出
thread2