java 主函数中启动第二个线程,然后主函数继续向下执行,不关心第二个线程的状态,要怎么写

需求是这样的,请求过来,先将所有的数据存下来,启动第二个线程去处理数据,主函数里面不关心第二个线程是否处理完成,直接返回成功,这样怎么写

你可以采取这样的操作:

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