class Demo extends Thread{
public Demo(String name){
super(name);
}

public void run(){
for(int i=0; i<6; ++i){
System.out.println("i = " + i + "......Thread=" + Thread.currentThread().getName());
try{
Thread.sleep(100);
}catch(InterruptedException e){
System.out.println("进程被打断!");
}
}
}
}


public class Test{
public static void main(String[] args) throws InterruptedException{

Demo d1 = new Demo("hjz");
Demo d2 = new Demo("chb");
d1.start();
//另外当某一个线程因为异常而终止,其他的线程照样执行,不会受到任何影响!
System.out.println(5/0);//throw new ArithmeticException()
for(int i=0; i<6; ++i){
System.out.println("i = " + i + "......Thread=" + Thread.currentThread().getName());
Thread.sleep(200);
}


d2.start();//如果开启新线程之前,就因为异常而中止了线程,那么新线程将无法开启!
}
}

/*
class Demo extends Thread{
public Demo(String name){
super(name);
}
//public Thread(String name) {
// init(null, null, name, 0);
//} 也就是在创建线程对象的时候,通过构造函数该线程就有了名字了!
public void run(){
for(int i=0; i<6; ++i){
System.out.println("i = " + i + "......Thread=" + getName());
try{
Thread.sleep(100);
}catch(InterruptedException e){
System.out.println("进程被打断!");
}
}
}
}

public class Test{
public static void main(String[] args) throws InterruptedException{
Demo d1 = new Demo("hjz");
Demo d2 = new Demo("chb");

d1.run();
d2.run();
}
}
*/