java线程学习3——线程的停止
2012-11-13 10:45
851 查看
方法一 stop方法
Thread t = new Thread(new MyThread());
t.stop();
非常不友好,该方法已经被废弃。使用该方法,线程直接停止,可能很多资源没有关闭,还有可能造成死锁。
方法二 interrupt方法
public class SleepThread implements Runnable
{
/**
* 线程运行时执行的方法
*/
public void run()
{
try
{
// 该线程进入阻塞状态5秒
Thread.sleep(5000);
for (int i = 0; i < 500; i++)
{
System.out.println(Thread.currentThread().getName() + i);
}
}
catch (InterruptedException e)
{
// 若调用该线程的interrupt方法,会报该异常,真实程序中可以关闭一些资源
e.printStackTrace();
}
}
}
package cn.xy.Thread;
public class SleepTest
{
public static void main(String[] args)
{
SleepThread tr = new SleepThread();
Thread t = new Thread(tr);
t.start();
for (int i = 0; i < 500; i++)
{
System.out.println(Thread.currentThread().getName() + i);
}
t.interrupt();
}
}
若调用该线程的interrupt方法,会报InterruptedException异常,真实程序中可以捕捉该异常并关闭一些资源。
方法三 flag
public class StopThread implements Runnable
{
private boolean flag = true;
public void run()
{
while (flag)
{
// flag变为false后可能会完成该线程的最后一次输出
System.out.println(Thread.currentThread().getName());
}
}
public void shutDown()
{
System.out.println("我被shutdown了!");
flag = false;
}
}
public class StopTest
{
public static void main(String[] args)
{
StopThread st = new StopThread();
Thread t = new Thread(st);
t.start();
for (int i = 0; i < 10; i++)
{
System.out.println(Thread.currentThread().getName() + i);
}
System.out.println("主线程结束!");
st.shutDown();
}
}
可以很灵活控制线程的结束,shutDown中可以关闭资源。
Thread t = new Thread(new MyThread());
t.stop();
非常不友好,该方法已经被废弃。使用该方法,线程直接停止,可能很多资源没有关闭,还有可能造成死锁。
方法二 interrupt方法
public class SleepThread implements Runnable
{
/**
* 线程运行时执行的方法
*/
public void run()
{
try
{
// 该线程进入阻塞状态5秒
Thread.sleep(5000);
for (int i = 0; i < 500; i++)
{
System.out.println(Thread.currentThread().getName() + i);
}
}
catch (InterruptedException e)
{
// 若调用该线程的interrupt方法,会报该异常,真实程序中可以关闭一些资源
e.printStackTrace();
}
}
}
package cn.xy.Thread;
public class SleepTest
{
public static void main(String[] args)
{
SleepThread tr = new SleepThread();
Thread t = new Thread(tr);
t.start();
for (int i = 0; i < 500; i++)
{
System.out.println(Thread.currentThread().getName() + i);
}
t.interrupt();
}
}
若调用该线程的interrupt方法,会报InterruptedException异常,真实程序中可以捕捉该异常并关闭一些资源。
方法三 flag
public class StopThread implements Runnable
{
private boolean flag = true;
public void run()
{
while (flag)
{
// flag变为false后可能会完成该线程的最后一次输出
System.out.println(Thread.currentThread().getName());
}
}
public void shutDown()
{
System.out.println("我被shutdown了!");
flag = false;
}
}
public class StopTest
{
public static void main(String[] args)
{
StopThread st = new StopThread();
Thread t = new Thread(st);
t.start();
for (int i = 0; i < 10; i++)
{
System.out.println(Thread.currentThread().getName() + i);
}
System.out.println("主线程结束!");
st.shutDown();
}
}
可以很灵活控制线程的结束,shutDown中可以关闭资源。
相关文章推荐
- Java学习笔记之线程(六):线程的停止
- Java并发学习笔记(5)停止基于线程的服务
- Java 多线程 学习笔记 线程的停止
- JAVA学习第二十八课(多线程(七))- 停止线程和多线程面试题
- Java 多线程学习(2)——停止线程
- 【Java学习笔记】14:再谈线程的启动和暂时停止
- Java进阶学习2-多线程之停止线程
- java线程学习3——线程的停止
- JAVA学习笔记50——线程状态+停止进程+阻塞进程
- [置顶] Java 多线程 学习笔记(二)停止线程的几种方法
- java多线程学习之停止休眠中的线程问题
- Java再学习——停止一个正在运行的线程
- Java多线程学习笔记—线程停止
- 学习日记java 线程的停止,jion,yield
- java基础学习__多线程(停止线程,守护线程,join方法)
- java线程学习3——线程的停止
- JAVA学习总结之线程概述
- java线程之基础学习
- Java线程学习
- java 从零开始,学习笔记之基础入门<线程及实例分析>(十九)