一、什么是线程

1、线程的顶级接口。

在Java中,一切与线程相关的程序最终都会指向Runnable接口。Runnable中文意思为:可执行的。所以可以这样理解,线程就是一个按照一条线(线可以理解为方向)执行的程序,线程也可以理解为一个任务。当然线程在Java中一定是以对象的形式存在的,但普通对象是不可以被执行的,如实体类对象,这些对象只能当作资源被线程访问。main方法就是一个线程,是程序执行的入口,这也就是为什么其他方法要在main方法里面调用的原因。
Runnable接口唯一的抽象方法run(),这个方法里写该线程需要执行的任务。

2、一段代码体验多线程时线程间的关系。

public class Test1 {
    public static void main(String[] args) {
        System.out.println(Thread.currentThread().getName()+":start");
        //开启一个新的线程
        new MyThread().start();
        System.out.println(Thread.currentThread().getName()+":end");
    }
    static class MyThread extends Thread{
        @Override
        public void run() {
            for (int i=0;i<10;i++){
                System.out.println(Thread.currentThread().getName()+":"+i);
            }
        }
    }
}

结果:

可以看到主线程输出完了,新线程才开始输出。所以线程没有额外控制的情况下,线程间就像平行的带方向的线,都从开始到结束也可能没有终点,互相不干扰。但是有些场景我们需要线程间有“干扰”,比如需要线程A执行完后线程B再执行,这就是线程的通信,{src://}。

3、cpu线程

cpu中也有线程的概念,cpu中的一个线程我们可以理解为一个执行者,执行者负责去执行java线程(任务)。java线程会消耗cpu资源,其实就是抢占cpu的时间片。但是cpu什么时候执行那个java线程我们无法知道。

4、并行、并发。

并行:并行是指一个cpu线程执行一个java线程,如cpu线程1执行java线程A,cpu线程2执行java线程B。
并发:并发是指一个cpu线程交替执行多个java线程,如 时间段1:cpu线程1执行java线程A,时间段2:cpu线程1执行java线程B,时间段3:cpu线程1执行...

总结:

1、cpu线程就是一个执行者。
2、java线程就是一个可执行程序(任务),本质是一个实现了Runnable接口的对象。
3、执行者执行任务。

posted @ 2022-06-08 21:54  longan55  阅读(128)  评论(0)    收藏  举报