多线程:
同时执行多个程序
多线程需要硬件支持(cpu)
并行:在同一时刻,有多个指令在多个cpu上同时执行
并发:在同一时刻,有多个指令在单个cpu上交替执行
进程:正在运行的软件
独立性:
动态性:
并发性:(在交替执行时,有随机性)
线程:是进程种的单个顺序控制流,是一条执行路径
单线程:一个进程只有一条执行路径,称单线程
多线程:一个进程有多条执行路径,称多线程
理解:
进程:可以理解为软件
线程:可以理解为软件里的一个功能
单线程:软件里只运行了一个功能
多线程:软件同时运行了多个功能,即一个进程里有多条线程
线程的实现,有3种方式:
优点 | 缺点 | |
Runnable、Callable<>都是接口 | 扩展性强,实现接口的同时还能继承其他类 | 编程复杂,不能直接使用Thread类中的方法 |
Thread是继承类 | 编程比较简单,可以直接使用Thread类中的方法 | 可扩展性较差,不能继承其他类 |
三种方式都需要重写run方法,作用是:用来封装被线程执行的代码(可称 线程参数)
在使用上,
1.继承于thread类,直接创建对象,直接启动(xxx.start())线程就可以
2.Runnable的实现类,在创建实现类对象之后,还需要在创建thread类,并且将线程参数传到thread构造方法的参数中。(thread构造参数传递的是Runnable数据类型,后面可以接一个String用来表示此线程的名称,线程名称也可以用thread对象调用setName(String s)方法命名线程 )
3.Callable<E>的实现类,泛型要传入你要返回的值的类型,这个接口的特点就是有返回值,然后还需要创建一个Futurntask<E&