描述:多线程是指软件或者硬件上实现多个线程并发执行的技术
具有多线程能力的计算机因有硬件支持而能够在同一时间执行多个线程,提升性能
- 并行:在同一时刻,有多个指令在多个CPU上同时执行。
- 并发:在同一时间,有多个指令在单个CPU上交替执行。
进程:是正在执行的软件
- 独立性:进程是一个能独立运行的基本单位,同时也是系统分配资源和调度的独立单位。
- 动态性:进程的实质是程序的一次执行过程,进程是动态产生,动态消亡的。
- 并发性:任何进程都可以同其他进程一起并发执行。
进程:就是操作系统中正在运行的一个应用程序。
线程:是进程中的单个顺序控制流,是一条执行路径。
- 单线程:一个进程如果只有一条执行路径,则称为单线程程序。
- 多线程:一个进程如果有多条执行路径,则陈伟读线程程序。
线程:就是应用程序中做的事情。如果:360杀毒软件,扫描木马,清理垃圾等,都属于360杀毒软件进程下的线程
Thread:
继承thread方法,重写Run方法:
为什么重写Run方法:
run()方法是用来封装被线程执行的代码
run()方法和start()方法的区别:
直接调用run()方法,相当于普通方法的调用,并没有开启线程。
start():启动线程,然后有JVM调用此线程的run()方法
创建线程三种方式:
继承Thread类方式实现
实现Runnable接口方式实现:实现Runnable接口,创建实现类对象,将对象传递给Thread启动
利用Callable和Future接口方式实现:实现Callable接口,重写call()方法,创建Callable实现类对象,
public class MyCallable implements Callable<String> {
for(int i=0;i<100;i++){
System.out.print("执行次数"+i);
}
return "测试";
}
public static void test(){
// 线程开启后需要支持里面的call方法
MyCallable mc = new MyCallable();
// 可以获取线程执行完毕之后的结果(Callable的return内容),也可以作为参数传递给Thread对象
FutureTask<String> ft = new FutureTask(mc);
Thread ti = new Thread(ft);
ti.start();
// 获取返回值
ft.get()
}