多线程

99 阅读1分钟

线程的相关概念

线程的创建

  1. 通过Thread类:
    • 继承Thread类
    • 重写run方法
    • 调用Start方法 举个小小的例子:
package com.Thread;

public class threadTest1 extends Thread{

    //重写run方法
    @Override
    public void run() {
        for (int i = 0; i < 20; i++) {
            System.out.println("我正在做作业"+i);
        }

    }

    public static void main(String[] args) {

        //main线程和主线程同时执行,通过cpu的调度

        //创建一个线程对象
        threadTest1 threadTest1 = new threadTest1();
        
        //调用start方法
        threadTest1.start();

        for (int i = 0; i < 30; i++) {
            System.out.println("我正在读书"+i);
        }

    }

}

输出结果:

这里按顺序输出是因为我们执行的太少了,电脑一下子解决,就看不出来main线程和主线程同时执行的,如果我们把循环的次数改大一点,比如说,1000啥的,就会出现不同哦。

  1. 通过Runnable接口**(推荐使用,因为Java是单继承)**:
    • 实现runnable接口
    • 重写run方法
    • 执行线程需要丢入runnable接口实现类,调用start方法。 举个小小的例子:
package com.Thread;

public class threadTest2 implements Runnable{
    @Override
    public void run() {
        for (int i = 0; i < 30; i++) {
            System.out.println("正在读书"+i);
        }
    }

    public static void main(String[] args) {

        //创建runna接口实现类对象
        threadTest2 threadTest2 = new threadTest2();

        //调用start方法
        //Thread thread = new Thread(threadTest2);
        //thread.start();

        new Thread(threadTest2).start();//可以用17 18两行代码代换

        for (int i = 0; i < 2000; i++) {
            System.out.println("正在写"+i);
        }


    }
}

输出结果:

从这里我们就可以很清楚的看出main线程和主线程是同时执行的,通过cpu调用

  1. 通过Callable接口:(了解即可)