一个程序开启了就是一个进程,进程里执行的是线程
进程只有一条,线程可以有很多条
线程就是独立的执行路径
下图为单线程调用run()方法,执行完成后,在回到主线程,多线程执行主线程的同时,调用run()方法,并且主线程不停止,同时进行
注意:很多多线程是模拟出来的,真正的多线程是指多个cpu,即多核,如:服务器。模拟出来的多线程,即在一个cpu下,在同一个时间点,cpu只能执行一个代码,因为切换的很快,所以就有同时执行的错觉。
多线程的几种创建方式:
继承Thread类
创建一个类并继承Thread类,重写run()方法,创建线程对象,调用start()方法启动线程
new Thread.start()
实现Runnable接口
创建一个类实现Runnable接口,实现run()方法,创建线程对象,调用start()方法
new Thread(创建的实现类对象).start()
实现Callable接口
实现Callable接口,需要返回值类型
重写call()方法,需要抛出异常
创建目标对象
创建执行服务:ExecutorService ser = Executors.newFixedPool(对象数量);
提交执行:Future<Boolean>result=ser.submit(目标对象);
获取结果:boolean b = result.get();
关闭服务:ser.shutdownNow();