Loading

多线程的创建和使用

package com.ruizhukai.demo01;

public class TestThread2 {
    /*
        第一步:继承java.lang.Thread
        第二步:重写run方法

        三个知识点:
               如何定义线程?
               如何创建线程?
               如何启动线程

    */
    public static void main(String[]args){
        long startTime = System.currentTimeMillis();
        //创建线程
        Thread t = new Prooessor();
        //启动线程
        t.start();//这段代码执行瞬间消失,告诉JVM再分配一个新的栈给t线程

        //这是个普通方法调用,这样做程序只有一个线程,run方法结束后,下面程序才能继续执行
        t.run(); //run()不需要程序员手动调用,系统线程启动之后自动调用run方法
        for (int i = 0; i < 1000; i++) {
            System.out.println("主线程-->" + i);
        }
        long endTime = System.currentTimeMillis();
        System.out.println("总共耗时"+(endTime-startTime) + "ms");
    }
}
class Prooessor extends Thread{
    //继承Thread类重写run方法
    public void run(){
        for (int i = 0; i < 100; i++) {
            System.out.println("run---------->" + i);
        }
    }
}

--------------------------------------------------------------------------------------------


package com.ruizhukai.demo01;
/*
*第二种实现方式
* */
//第一步;写一个类实现java.lang.Runnable接口
//第二步;实现run方法

import org.junit.Test;

public class TestThread3{
public static void main(String[] args) {
//创建线程
Thread t = new Thread(new Prooessor1());
//启动
t.start();
for (int i = 0; i < 100; i++) {
System.out.println("主线程-->" + i);
}
}

}
//这种方式比较好 因为一个类实现接口之外保留了类的继承
class Prooessor1 implements Runnable{
@Override
public void run() {
for (int i = 0; i <100; i++) {
System.out.println("run---->" + i);
}
}
}
 

 

posted @ 2020-03-04 22:19  Rzk  阅读(275)  评论(0编辑  收藏  举报