大家好: 我在编写一个使用多线程的程序。
介绍一下功能:
//有一个工作类:MailClient.java
public MailClient implements Runnable {
private void getNewMails()
{
//里面是一些简单的逻辑。
} public void run() {
getNewMails();
}
} 接下来创建线程池来调用工作类
方法一:使用ExecutorService
简单些一下main
main(){
ExecutorService executorService = Executors.newCachedThreadPool();
executorService.execute(new MailClient());
}
结果:main函数结束,整个就结束。
然后方法一改进如下:增加
executorService.shutdown();
while (!executorService.isTerminated()) {} 结果:仍无法获得运行结果。
方法二:
自己编译一个线程池,针对每个线程判断一下状态:
while (mailT.isAlive()) {
}
能得到预期结果。 求助,怎么使用JDK提供的线程池,让所有线程池中所有线程结束后再停止?????
介绍一下功能:
//有一个工作类:MailClient.java
public MailClient implements Runnable {
private void getNewMails()
{
//里面是一些简单的逻辑。
} public void run() {
getNewMails();
}
} 接下来创建线程池来调用工作类
方法一:使用ExecutorService
简单些一下main
main(){
ExecutorService executorService = Executors.newCachedThreadPool();
executorService.execute(new MailClient());
}
结果:main函数结束,整个就结束。
然后方法一改进如下:增加
executorService.shutdown();
while (!executorService.isTerminated()) {} 结果:仍无法获得运行结果。
方法二:
自己编译一个线程池,针对每个线程判断一下状态:
while (mailT.isAlive()) {
}
能得到预期结果。 求助,怎么使用JDK提供的线程池,让所有线程池中所有线程结束后再停止?????
例如:
Thread workThread=new Thread(runnable);
workThread.join();
workThread.start();
有任何问题,请联系我
你用线程池可以自己定义拿线程和关闭线程的方法。MyThread{
run(){
while(running){
....
}}}拿线程 就是在map里边取线程,设置running = true。
关闭线程 就把线程放到map,设置running = false。