在Java应用程序中,当用户点击下载时,建立远程连接并从远程下载内容是在单独的线程中完成的,并且在屏幕中弹出一个对话框以显示下载进度.现在,在对话框中添加了取消命令,以便为用户提供取消下载的选项.当用户点击取消按钮时,可以使用程序中的dispose()方法处理对话框但是如何停止/终止已经启动的线程?线程执行以下任务:1.建立与远程的连接2.从远程下载内容3.在本地存储内容(内容通过流传输)请帮我解决此问题
停止一个线程可能是错误的看待方式.桌面计算机上单个线程消耗的实际资源无关紧要.可以将其视为中止下载.
如果读取是阻塞的,那么这不是一个很大的问题.你可以等到有一些数据再不再读.一种更突然的方法是调用close流(来自另一个线程).
您需要检查下载例程中的某个位置是否有停止标志。
\n\npublic DownloadThread implements Runnable {\n private boolean stop;\n public void stop() { stop = true; }\n public void run() {\n while (!stop) {\n // download a block, save it somewhere\n }\n }\n}\nRun Code Online (Sandbox Code Playgroud)\n\n当然,这缺乏必要的同步,但是 \xe2\x80\x99s 关于如何在不使用已弃用的 Thread.stop ()的情况下停止线程。
\n| 归档时间: |
|
| 查看次数: |
1085 次 |
| 最近记录: |