gpt4 book ai didi

java - 当一个线程完成后,如何通知主线程?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:57:00 24 4
gpt4 key购买 nike

我使用 FTP 原始命令将文件上传到 FTP 服务器,我在代码中启动了一个新线程通过套接字发送文件。当新启动的线程完成发送文件时,我想向控制台输出一些消息,如何确保线程已完成工作?这是我的代码:

TinyFTPClient ftp = new TinyFTPClient(host, port, user, pswd);
ftp.execute("TYPE A");
String pasvReturn = ftp.execute("PASV");
String pasvHost = TinyFTPClient.parseAddress(pasvReturn);
int pasvPort = TinyFTPClient.parsePort(pasvReturn);
new Thread(new FTPFileSender(pasvHost, pasvPort, fileToSend)).start();

最佳答案

how can I make sure the thread have finished it's work ?

你调用Thread.join()像这样:

...
Thread t = new Thread(new FTPFileSender(pasvHost, pasvPort, fileToSend));
t.start();

// wait for t to finish
t.join();

但是请注意,Thread.join阻塞,直到另一个线程完成。

一个更好的想法或许是将上传线程封装在一个 UploadThread 类中,该类在完成时执行一些回调。例如,它可以实现 addUploadListener 并在上传完成时通知所有此类监听器。然后主线程会做这样的事情:

UploadThread ut = new UploadThread(...);
ut.addUploadListener(new UploadListener() {
public void uploadComplete() {
System.out.println("Upload completed.");
}
});

ut.start();

关于java - 当一个线程完成后,如何通知主线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6173835/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com