一、什么是线程
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、执行者执行任务。

浙公网安备 33010602011771号