【Java】--线程

概念:
进程是指一个内存中运行的应用程序,每个进程都有自己独立的一块内存空间,一个进程中可以启动多个线程。
系统资源分配和调度的独立单位,相互之间不能共享资源,由操作系统

线程是指进程中的一个执行流程,一个进程中可以运行多个线程。比如java.exe进程中可以运行很多线程。线程总是属于某个进程,进程中的多个线程共享进程的内存。
依靠程序执行的顺序控制流,只能使用程序的资源和环境,共享进程的全部资源
线程分总体两类:用户线程和守候线程
用户线程执行完毕的时候,JVM自动关闭。但是守候线程却不独立于JVM,守候线程一般是由操作系统或者用户自己创建的。

Java中,每个线程都有一个调用栈,即使不在程序中创建任何新的线程,线程也在后台运行着。一个Java应用总是从main()方法开始运行,mian()方法运行在一个线程内,它被称为主线程。一旦创建一个新的线程,就产生一个新的调用栈。

class T extends Thread {
     
    private Integer i = null;

    public T(Integer i) {
     
        this.i = i;
    }

    public void run() {
     //run不能直接调用,调用不分时。
        int i = 0;
        for (; ; ) {
     
            System.out.println(i++);
        }
    }
}

public class 线程text1 {
     
    public static void main(String[] args) {
     
        Integer i = 0;
        T t = new T(i);
        T t1 = new T(i);//传对象的引用,说明t和t1能访问同一份数据

        // t.run();不能调用run执行任务
        t.start();//调用start间接执行run()
        t1.start();//通过Thread类中的start()方法启动线程,并运行。
    }

}

这个简单的例子首先继承了Thread类,启动线程要调用Thread对象的start()方法,而不是run()或者别的方法。在调用start()方法之前:线程处于新状态中,新状态指有一个Thread对象,但还没有一个真正的线程。在调用start()方法之后,启动新的执行线程(具有新的调用栈)。该线程从新状态转移到可运行状态,当该线程获得机会执行时,其目标run()方法将运行。

线程调度:
线程调度是指按照特定的机制为多个线程分配CPU的使用权 一个CPU,只能执行一条指令,每个指令在获得CPU使用权后才可执行,而多线程的并发执行只是人的感官,实际上是轮换执行。在运行池中,有很多的处于就绪状态的线程在等待CPU,Java虚拟机要为多个线程分配CPU的使用权,有两种调度:分时调度和抢占调度。

你可能感兴趣的:(Java)