线程

来源:互联网 发布:手机淘宝详情页大小 编辑:程序博客网 时间:2024/05/17 20:44

一.线程与进程
1.线程:线程(Theard),有时被称为轻量级进程(Lightweight Process,LWP),是程序执行流的最小单元,在多线程中,单线程是CPU的基本单位。线程之间可相互制约,致使线程在运行中呈现出间断性,线程也有就绪、阻塞和运行三种基本状态。

public class Test {    public static void main(String[] strings) {        System.out.println(Thread.currentThread().getName() + " 线程运行开始!");    }}

执行结果这里写图片描述
注:每个线程都有一个标识名,多个线程可以同名。如果线程创建时没有指定标识名,就会为其生成一个新名称。
2.进程:进程是资源分配的基本单位。所有与该进程有关的资源,都被记录在进程控制块PCB中。以表示该进程拥有这些资源或正在使用它们。
3.区别
1)地址空间和其它资源(如打开文件):进程间相互独立,同一进程的各线程间共享。某进程内的线程在其它进程不可见
2)通信:进程间通信IPC,线程间可以直接读写进程数据段(如全局变量)来进行通信——需要进程同步和互斥手段的辅助,以保证数据的一致性。
3)调度和切换:线程上下文切换比进程上下文切换要快得多。
4)在多线程OS中,进程不是一个可执行的实体。
二.创建新执行线程
1.将类声明为 Thread 的子类即extends Thread,该子类应重写 Thread 类的 run 方法。接下来可以分配并启动该子类的实例。
2.声明实现 Runnable 接口的类即 implements Runnable。该类然后实现 run 方法。然后可以分配该类的实例,在创建 Thread 时作为一个参数来传递并启动。
三.线程的状态及周期
 从图中我们可以直观的看到:start()方法的调用后并不是立即执行多线程代码,而是使得该线程变为可运行态(Runnable),(什么时候运行是由操作系统决定的)
这里写图片描述
这里写图片描述
注:1Thread.sleep()方法调用目的是不让当前线程独自霸占该进程所获取的CPU资源,以留出一定时间给其他线程执行的机会。

四.多线程
这里写图片描述

0 0
原创粉丝点击