下载安卓APP箭头
箭头给我发消息

客服QQ:3315713922

编程语言:java停止线程

作者:hongxiao2020     来源: https://www.cnblogs.com/hongxiao2020/archive/2020/04/01/1261点击数:703发布时间: 2020-04-10 09:16:17

标签: 计算机java编程语言

大神带你学编程,欢迎选课

  线程是独立调度和分派的基本单位。线程可以为操作系统内核调度的内核线程,如Win32线程;由用户进程自行调度的用户线程,如Linux平台的POSIXThread;或者由内核与用户进程,如Windows7的线程,进行混合调度。

  同一进程中的多条线程将共享该进程中的全部系统资源,如虚拟地址空间,文件描述符和信号处理等等。但同一进程中的多个线程有各自的调用栈(callstack),自己的寄存器环境(registercontext),自己的线程本地存储(thread-localstorage)。

  stop()已经过时.

  停止线程:run()方法结束。

  开启多线程运行,通常代码都是循环结构。

  只要控制住循环,就可以让run()结束,也就结束了线程。

  classStopThreadimplementsRunnable{

  privatebooleanflag=true;

  @Override

  publicvoidrun(){

  while(flag){

  System.out.println(Thread.currentThread().getName()+"...run");

  }

  }

  publicvoidchangeFlag(){

  flag=false;

  }

  }

  publicclassStopThreadDemo{

  publicstaticvoidmain(String[]args){

  StopThreadst=newStopThread();

  Threadt1=newThread(st);

  Threadt2=newThread(st);

  t1.start();

  t2.start();

  intnum=0;

  while(true){

  if(num++==60){

  st.changeFlag();

  break;

  }

  System.out.println(Thread.currentThread().getName()+"......"+num);

  }

  }

  }

  特殊情况:当线程处于冻结状态就不会读取到标记,那么线程也就不会结束。

  当没有指定的方式让冻结的线程恢复到运行状态时,这时需要对冻结进行清除,强制让线程恢复到运行状态中来,这样就可以操作标记让线程结束。

  Thread类中提供了该方法:interrupt();

  classStopThreadimplementsRunnable{

  privatebooleanflag=true;

  @Override

  publicsynchronizedvoidrun(){

  while(flag){

  try{

  wait();

  }catch(InterruptedExceptione){

  System.out.println(Thread.currentThread().getName()+"...Exception");

  flag=false;

  }

  System.out.println(Thread.currentThread().getName()+"...run");

  }

  }

  publicvoidchangeFlag(){

  flag=false;

  }

  }

  publicclassStopThreadDemo{

  publicstaticvoidmain(String[]args){

  StopThreadst=newStopThread();

  Threadt1=newThread(st);

  Threadt2=newThread(st);

  t1.start();

  t2.start();

  intnum=0;

  while(true){

  if(num++==60){

  //st.changeFlag();

  t1.interrupt();

  t2.interrupt();

  break;

  }

  System.out.println(Thread.currentThread().getName()+"......"+num);

  }

  System.out.println("over");

  }

  }

  在多核或多CPU,或支持Hyper-threading的CPU上使用多线程程序设计的好处是显而易见,即提高了程序的执行吞吐率。在单CPU单核的计算机上,使用多线程技术,也可以把进程中负责I/O处理、人机交互而常被阻塞的部分与密集计算的部分分开来执行,编写专门的workhorse线程执行密集计算,从而提高了程序的执行效率。

赞(13)
踩(0)
分享到:
华为认证网络工程师 HCIE直播课视频教程