package Threadtest; /** * 停止线程的方法 * stop的方法已经不推荐使用了,为了适用以后的需要,还是得来好好的琢磨下thread中的interrupt方法 * @author Don Quixote * 2010-12-2 下午02:52:56 * Hello,Don Quixote! */ public class ThreadTest extends Thread { public static void main(String[] args) { ThreadTest t=new ThreadTest(false); System.out.println("线程开始启动"); t.start(); /* * 进行一些运算,让线程执行一段时间 */ Long ab=0L; for(int i=0;i<10000000;i++){ ab++; } System.out.println("线程开始终止"); t.stopThread(); } public ThreadTest(boolean b){ stop=b; } /* * Volatile修饰的成员变量在每次被线程访问时,都强迫从共享内存中重读该成员变量的值。 * 而且,当成员变量发生变化时,强迫线程将变化值回写到共享内存。 * 这样在任何时刻,两个不同的线程总是看到某个成员变量的同一个值 */ volatile boolean stop = false; public void stopThread(){ stop=true; } public void run(){ while(!stop){ System.out.println("线程正在运行"); try { this.sleep(100); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } System.out.println("线程已经停止"); } }