Java学习基础- 线程 一、学习线程需要清楚的三个概念 二、线程的创建和启动

     1.进程:进程是一个静态的概念

     2.线程:一个进程里边有一个主线程叫main()的方法,是一个程序里边的,一个进程里边不同的执行路径。

     3.在同一时间点,一个CPU只执行一个线程。因为CPU的运行速度很快,因此我们看起来就像多线程一样。

       什么才是真正的多线程?如果你的机器是双CPU或者双核,这确确实实是多线程。

二、线程的创建和启动

Java学习基础- 线程
一、学习线程需要清楚的三个概念
二、线程的创建和启动

 1.利用实现Runnable接口创建和启动新线程的案例

package cn.galc.test;

public class TestThread1{
    public static void main(String args[]){
        Runner1 r1 = new Runner1();//这里new了一个线程类的对象出来
        //r1.run();//这个称为方法调用,方法调用的执行是等run()方法执行完之后才会继续执行main()方法
        Thread t = new Thread(r1);//要启动一个新的线程就必须new一个Thread对象出来
        //这里使用的是Thread(Runnable target) 这构造方法
        t.start();//启动新开辟的线程,新线程执行的是run()方法,新线程与主线程会一起并行执行
        for(int i=0;i<10;i++){
            System.out.println("maintheod:"+i);
        }
    }
}
/*定义一个类用来实现Runnable接口,实现Runnable接口就表示这个类是一个线程类*/
class Runner1 implements Runnable{
    public void run(){
        for(int i=0;i<10;i++){
            System.out.println("Runner1:"+i);
        }
    }
}

2.继承Thread类,重写run方法来创建和启动新线程

package cn.galc.test;

public class TestThread1{
    public static void main(String args[]){
        Runner1 r1 = new Runner1();//这里new了一个线程类的对象出来
        //r1.run();//这个称为方法调用,方法调用的执行是等run()方法执行完之后才会继续执行main()方法
        Thread t = new Thread(r1);//要启动一个新的线程就必须new一个Thread对象出来
        //这里使用的是Thread(Runnable target) 这构造方法
        t.start();//启动新开辟的线程,新线程执行的是run()方法,新线程与主线程会一起并行执行
        for(int i=0;i<10;i++){
            System.out.println("maintheod:"+i);
        }
    }
}
/*定义一个类用来实现Runnable接口,实现Runnable接口就表示这个类是一个线程类*/
class Runner1 implements Runnable{
    public void run(){
        for(int i=0;i<10;i++){
            System.out.println("Runner1:"+i);
        }
    }
}

注意:使用这两种方法开辟新的线程时,优先考虑使用实现Runnable接口的方式去开辟新的线程,因为接口的实现可以实现多个,而类的继承只能是单继承。