我需要在java的后台运行一个线程,并且可能需要在开始执行其实际功能之前将一些信息传递给线程。
如何实现这个?
其次,是否可以启动进一步操作并退出请求上下文的线程。请注意,我必须在Web应用程序中实现。
答案 0 :(得分: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应用程序中运行,但你必须非常小心,确保这些后台线程在某些时候完成,否则这将是一个很好的小内存泄漏。 / p>
请注意,如果您想在两个线程运行时共享信息,则需要同步信息访问。
根据后台线程的作用,使用Quartz
等框架可能有意义答案 1 :(得分:0)
是否可以启动执行进一步操作并退出请求上下文的线程。请注意,我必须在Web应用程序中实现。
您可以使用ExecutorService将任意数量的任务传递给并在完成后关闭。
答案 2 :(得分: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