源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

java控制线程运行

  • 时间:2021-01-19 23:41 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:java控制线程运行
1、线程的控制很常见,如文件传送到一半时,需要暂停文件传送,或终止文件传送,这实际上就是控制线程的运行。 2、线程有创建、可运行、运行中、阻塞、死亡5个状态。 创建:使用new运算符创建一个线程 可运行:使用start方法启动一个线程后,系统分配了资源 运行中状态:执行线程的run方法 阻塞:运行的线程因为某种原因停止继续运行 死亡状态:线程结束 3、传统方法的安全问题 Thread的stop(),suspend(),resume(),destroy()方法,因为不安全,可能造成死锁,已经不再使用了。 4、如何控制线程的运行 举个例子,假如某个文件的传输需要10s,让其传输到某个时刻暂停传输,然后继续,到传完为止。使用实现Runnable的方法完成,首先是文件传输的Runnable类 代码如下:
[u]复制代码[/u] 代码如下:
public class ThreadControlTest1 implements Runnable {  private int percent = 0;  public void run()  {   while(true)   {    System.out.println("传送进度:"+ percent +"%");    try    {     Thread.sleep(1000);    }    catch(Exception ex)    {}    percent += 10;    if(percent == 100)    {     System.out.println("传送完毕");     break;    }   }  }  public static void main(String[] args)  {   ThreadControlTest1 ft = new ThreadControlTest1();   Thread th = new Thread(ft);   th.start();  } }
5、运行,控制台上将打印文件传输的模拟过程。可以看出,如果将该类对象以线程运行,while循环会执行10次后退出。 但是,需要在某个时刻(如5秒后)暂停线程运行(如1分钟),但又不能使用Thread的相关函数,该怎么办? 要解决这个问题,常见的方法如下: 1.当需要暂停时,干脆让线程的run方法结束运行以释放资源(实际上就是让该线程永久结束) 2.线程需要继续时,新开辟一个线程继续工作 如何让run方法结束呢,在run方法中有一个while循环,将改循环的标志由true改为false即可。 6、上面的代码可以改为如下:
[u]复制代码[/u] 代码如下:
public class ThreadControlTest1 implements Runnable {  private int percent = 0;  private boolean isRun = true;  public void run()  {   while(isRun)   {    System.out.println("传送进度:"+ percent +"%");    try    {     Thread.sleep(1000);    }    catch(Exception ex)    {}    percent += 10;    if(percent == 100)    {     System.out.println("传送完毕");     break;    }   }  }  public static void main(String[] args)  {   ThreadControlTest1 ft = new ThreadControlTest1();   Thread th = new Thread(ft);   th.start();   try   {    Thread.sleep(5000);   }catch(Exception ex)   {}   ft.isRun = false;   System.out.println("暂停一分钟");   try   {    Thread.sleep(1000*60);   }catch(Exception ex)   {}   ft.isRun = true;   th = new Thread(ft);   th.start();  } }
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部