-3

我需要在 java 的后台运行一个线程,并且可能需要在线程开始执行其实际功能之前将一些信息传递给线程。

如何实施?

其次,是否可以启动一个执行进一​​步操作并退出请求上下文的线程。请注意,我必须在 Web 应用程序中实现。

4

3 回答 3

2

回答您的第一个问题的示例:

class NewThread extends Thread
{
    public String someInformation;

    @Override
    public void run()
    {
        System.out.println(someInformation);
    }
}

public class YourClass
{
    public void startANewThread()
    {
        NewThread newThread = new NewThread();
        newThread.someInformation = "hello";
        newThread.start();
    }
}

至于您的第二个问题:此代码应该在 Web 应用程序中运行,但是您必须非常小心以确保这些后台线程将在某个时候完成,否则这将是一个不错的小内存泄漏。

请注意,如果要在两个线程都运行时共享信息,则需要同步信息访问。

根据后台线程所做的事情,使用像Quartz这样的框架可能是有意义的

于 2012-08-08T12:56:33.947 回答
0

是否可以启动一个执行进一​​步操作并退出请求上下文的线程。请注意,我必须在 Web 应用程序中实现。

您可以使用 ExecutorService 将任意数量的任务传递给并在完成后关闭。

于 2012-08-08T13:01:11.210 回答
0

试试这段代码,有两个线程,一个线程将在后台运行,另一个线程将开始执行任务。在这里,您也可以设置返回类型,这与 thread.run() 方法不同。

FutureTask<Response> future = new FutureTask<>(newCallable<Response>() {
    public yourreturntype call() {
        doSomething(Thread1);
    }
});

ExecutorService executor = Executors.newSingleThreadExecutor();
executor.execute(future); 
doSomethingelse(Thread2)
//This thread doesnot wait for thread1 to complete
于 2015-02-05T10:21:41.000 回答