多线程:让程序同时做多件事情
线程:线程是操作系统能够进行运行的最小单位,它被包含在进程之中,是进程中实际运作单位
进程:进程是程序的基本执行实体
应用场景:软件中的耗时操作、加载大量资源文件、拷贝迁移大文件
并发和并行:
并发:在同一时刻,有多个指令在单个CPU上交替执行
并行:在同一时刻有多个指令在多个CPU上同时执行
多线程的实现方式:
(1)继承Thread类的方式进行实现:编程比较简单,可以直接使用Thread类中的方法,可扩展性较差,不能继承其他的类
1.自己定义一个类继承Thread
2.重写run方法
3.创建子类对象,并启动线程
(2)实现Runnable接口的方式进行实现:编程比较简单,可以直接使用Thread类中的方法,可扩展性较差,不能继承其他的类
1.自定义一个类,实现Runnable接口
2.重写里面的run方法
3.创建此类的对象
4.创建一个Thread对象,并启动线程
(3)利用Callable接口和Future接口方式实现:扩展性强,实现该类接口的同时还可以继承其他的类,但是编程相对复杂,不能直接使用Thread类中的方法
可以获取到多线程运行的结果
1.创建一个类实现Callable接口
2.重写call(是有返回值的,表示多线程运行的结果)
3.创建该类的对象(表示多线程要执行的任务)
4.创建Future对象(管理多线程运行的结果)
5.创建Thread类对象,并启动(表示线程)
多线程中的常见成员方法:
方法名称 | 说明 |
String getName() | 返回此线程的名称 |
void setName(String name) | 设置线程的名称 |
static Thread currentThread() | 获取当前线程的对象 |
static void sleep(long time) | 让线程休眠指定的时间,单位为毫秒 |
setPrioirty(int newPriority) | 设置线程的优先级 |
final int getPriority() | 获取线程的优先级 |
final void setDaemon(boolean on) | 设置守护线程 |
public static void yield() | 出让线程/礼让线程 |
public static void join() | 插入线程/插队线程 |
当其他的非守护线程执行完毕后,守护线程会陆续结束
线程的生命周期:
线程的安全问题:
?