多线程
线程:
线程是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。
进程:
程序的基本执行实体
并发:
在同一时刻,有多个指令在单个CPU上交替执行
并行:
在同一时刻,有多个指令在多个CPU上同时执行
多线程的实现方式:
- 继承Thread类的方式进行实现
- 实现Runnable接口的方式进行实现
- 利用Callable接口和Future接口方式实现
Thread类
public static void main(String[] args) {
//1.定义类继承Thread类
//2.重写run方法
//3.创建子类的对象,并启动线程
//创建MyThread对象
MyThread t1 = new MyThread();
MyThread t2 = new MyThread();
//取名字,方便等会运行看结果
t1.setName("线程1");
t2.setName("线程2");
//开启线程
t1.start();
t2.start();
}
Runnable接口
public static void main(String[] args) {
//1.定义一个类实现Runnable接口
//2.重写run方法
//3.创建自己类的对象
//4.创建Thread类的对象,并启动线程
//创建自己类的对象
MyRun mr = new MyRun();
//创建Thread类的对象,并启动线程
Thread t1 = new Thread(mr);
Thread t2 = new Thread(mr);
//设置名字
t1.setName("线程1");
t2.setName("线程2");
//开启线程
t1.start();
t2.start();
}
Callable接口和Future接口
public static void main(String[] args) throws ExecutionException, InterruptedException {
//1.创建一个类MyCallable实现Callable接口
//2.重写call(有返回值)
//3.创建MyCallable的对象(表示要执行的任务)
//4.创建FutureTask的对象(管理多线程运行的结果)
//5.创建Thread的对象,并启动线程
//创建MyCallable对象
MyCallable mc = new MyCallable();
//创建FutureTask的对象
FutureTask<Integer> ft = new FutureTask<>(mc);
//创建Thread的对象,并启动线程
Thread t1 = new Thread(ft);
t1.start();
//获取多线程的结果
System.out.println(ft.get());
}
成员方法