1.
package com.threadtest4;
public class MyThread extends Thread{
@Override
public void run(){
super.run();
for (int i = 0; i < 500000; i++) {
if (this.isInterrupted()){
System.out.println("已经停止,我要退出了!!!");
break;
}
System.out.println("i=" + (i+1));
}
}
}
2
package com.threadtest4;
public class Run {
public static void main(String[] args) {
try {
MyThread thread = new MyThread();
thread.start();
Thread.sleep(2000);
thread.interrupt();
} catch (InterruptedException e) {
System.out.println("main catch");
e.printStackTrace();
}
System.out.println("end");
}
}
3. 守护线程示例
package com.threadtest5;
public class MyThread extends Thread{
private int i = 0;
@Override
public void run(){
while (true){
i++;
System.out.println("i = " + i);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
package com.threadtest5;
public class Run {
public static void main(String[] args) {
try {
MyThread thread = new MyThread();
thread.setDaemon(true);
thread.start();
Thread.sleep(5000);
System.out.println("我离开thread对象也不在打印了,也就是停止了!");
} catch (InterruptedException e) {
System.out.println("main catch");
e.printStackTrace();
}
System.out.println("end");
}
}
上述将子线程设置为守护线程,那么主线程(非守护线程)结束之后,子线程也随之结束。