JAVA版,线程初级入门案例一:继承Thread类创建线程

进程:计算机需要执行多个程序,所以需要分成多个小任务,每一个就是一个进程
线程:进程可以分为多个可执行的小任务,每一个就是一个线程

计算机上的任务是由CPU来执行的,在某个时间点,某个核中只能执行一个进程。
而进程是由线程组成,所以同一时刻CPU只能执行某个线程

多线程:
线程的工作职责分为和CPU交互或者和硬件交互,当线程和硬件交互时,CPU处于空闲状态,
多线程则可以提高CPU的利用率(理论上最好状态是100%)

创建多线程方式:
继承Thread类

线程竞争图:
JAVA版,线程初级入门案例一:继承Thread类创建线程_第1张图片

//main方法是主线程,
    public static void main(String[] args) {
        //不需要创建主线程,JAVA虚拟机会自动创建
        //创建支线程
        TDemo t1=new TDemo("1111");
        TDemo t2=new TDemo("2222");
        //使用父类Thread中的start()方法,开启线程
        t1.start();
        t2.start();
        //然后再运行一下主线程,看运行效果
        for (int i = 0; i < 20; i++) {
            System.out.println("这是主线程"+i);
            //主线程也可以休眠,直接使用Thread类名,调用sleep()方法,可以让主线程休眠
            try {
                Thread.sleep(10);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }

        }
    }
}
//代表线程的类--->描述线程的任务信息
class TDemo extends Thread{
    //用来记录线程名字,方便看到运行效果
    private String name;

    public TDemo(String name){
        super();
        this.name=name;
    }
    //一定要重写的方法 run(),线程的具体任务信息是在方法里面进行描述
    @Override
    public void run() {
        for (int i = 0; i < 20; i++) {
            System.out.println(name+"i="+i);
            //为了看到演示效果,线程休眠
            try {
                // 线程休眠可能会不能再次激活,所以必须自己捕获
                Thread.sleep(10);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }

运行结果:
JAVA版,线程初级入门案例一:继承Thread类创建线程_第2张图片
但是这种方式并不灵活,JAVA中是单继承,如果当前类继承了Thread类,就不能继承其他的类,所以使用继承非常的不灵活
下一篇,将使用实现Runnable接口,实现线程
JAVA版线程基础案例二:实现Runnable完成线程
提升案例,线程不安全的卖票程序(实际上把输出改成了抢糖)
JAVA版本,线程三:线程实现卖票程序

你可能感兴趣的:(java初级)