线程概述以及线程的两种创建方式

package countThread;

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

    /**
     * 线程的执行体
     * 
     * 创建新执行线程有两种方法,一种方法是将类声明为Thread的子类,该子类应该重写Thread类中的run方法
     * 接下来可以分配并且启动该子类的实例
     */
    @Override
    public void run() {
        for(int i=0;i<50;i++) {
            System.out.println(this.getName()+"hello"+i);
        }
    }

}
package countThread;

public class CountThread2 implements Runnable{
    
    
    

    /**
     * 线程的执行体
     * 
     * 创建新执行线程有两种方法,一种方法是将类声明为Thread的子类,该子类应该重写Thread类中的run方法
     * 接下来可以分配并且启动该子类的实例
     */
    @Override
    public void run() {
        for(int i=0;i<50;i++) {
            //输出线程的名字
            System.out.println(Thread.currentThread().getName()+"hello"+i);
        }
    }

}
package countThread;

public class Demo2 {
    public static void main(String[] args) {
        CountThread ct = new CountThread("我是1");
        CountThread ct1 = new CountThread("我是2");
        /*
        ct.setName("线程1");
        ct1.setName("线程2");
        */
        //启动线程
        /**
         *  ct.run()!!!不是这么调用的,这样只是调用了run方法
         */
        ct.start();
        ct1.start();
    }
}
package countThread;

public class Demo3 {
    public static void main(String[] args) {
        CountThread2 ct = new CountThread2();
        Thread t1 = new Thread(ct,"123");
        CountThread2 ct1 = new CountThread2();
        Thread t2 = new Thread(ct1,"456");
        t1.start();
        t2.start();
        
    }
}

猜你喜欢

转载自www.cnblogs.com/java-jiangtao-home/p/9374999.html