线程
线程是进程的最小组成单位,每个线程干自己的事
- 单线程
一个程序当中只产生了一个任务,也就是一格单独的线程,比如说我就看视频
- 多线程
多线程是指一个程序中产生了多个任务并且同时进行,比如说我一边和女朋友打电话一边打游戏,日常生活当中都是可以同时进行
多线程侧重的是程序并行执行这样能够提高程序的执行效率,不想单线程逐次执行。
- 线程创建
线程的创建主要分为一下三种
通过继承Thread类 run()无返回值
通过继承Runable接口
通过使用ExecutorService,Callable,Future实现有返回结果的多线程run()是有返回值的
案例:
package jucdemo;
/**
* @author 邓亚非
*/
public class ThreadDemo01 extends Thread {
private String name;
public ThreadDemo01(String name){
this.name=name;
}
@Override
public void run() {
for (int i=0;i<=100;i++){
System.out.println(this.name+"跑了"+i+"米");
}
try {
// 隔一秒钟休息一次
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
// 使用多态
Thread p1=new ThreadDemo01("花木兰");
Thread p3=new ThreadDemo01("关羽");
Thread p2=new ThreadDemo01("马超");
// 如果使用main调用run方法,他们就是一个普通方法,不是多线程并行在执行
// p1.run();
// p2.run();
// p3.run();
p1.start();
p2.start();
p3.start();
}
}
如果你在main方法里面直接用run方法不会交替执行,必须通过调用start方法启动线程
上图可以看出他们是交替执行的,就是一个多线程在跑
进程
一个正在运行的程序结束一个进程,举个例子,手机看视频和玩游戏
手机的运行就是一个进程,看视频和玩游戏分别是两个线程各自执行,视频不能看了,也不会影响你玩游戏,但是进程手机崩了,两个都不能玩了,进程结束,线程结束
看视频和玩游戏两者是并发的,并发是指他们两个可以同时进行