多线程
线程:
线程是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。
进程:
程序的基本执行实体
并发:
在同一时刻,有多个指令在单个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());}
成员方法