一、什么是线程
一个独立程序的每一次运行称为一个进程,每个进程中又可以包含多个同时执行的子任务,对应多个线程。进程是操作系统资源分配的基本单位,而线程是CPU的基本调度单位。
一个程序运行后至少有一个进程。
一个进程可以包含多个线程,但至少需要有一个线程,否则这个进程是没有意义的。
进程间不能共享数据段地址,但同进程的线程之间可以。
如果要实现一个程序中多段代码同时并发执行,就需要产生多个线程,并指定每个线程上所要运行的程序段,这就是多线程。
二、线程的组成与特点
CPU时间片:操作系统(OS)会为每一个线程分配执行时间。(根据时间片,抢占式执行,时间到了就切换)
运行数据:
堆空间:引用类型,存储线程需使用的对象(所有new的对象),多个线程可以共享堆中的对象。
栈空间:存储线程需使用的局部变量,每个线程都拥有独立的栈。
线程特点:
1.线程抢占式运行:效率高、防止单一线程长时间占用CPU。
2.在单核CPU中,宏观上同时执行,微观上顺序执行。
三、线程的创建
创建线程三种方式:
1.继承Thread类,重写run类方法()。
pubilc class MyThread extends Thread{ //继承Thread类
pubulic MyThread(){
}
pubulic MyThread(String name){
super(na