目录
运行方式:
串行:一个CPU上,执行多个任务
并行:任务数小于等于CPU核数,即任务同时执行
并发:任务数大于CPU核数,会采用时间片管理的方式交替处理多个任务,实现多个任务看
起来是同时执行的,但是实际上总有任务不在执行,只是切换任务的速度相当快,看上去是
一起执行而已
在多线程中,线程与线程之间采用的是并发的方式
如何实例化:
通过继承Thread类来实现多线程:
在java中通过java.lang.Thread类来实现多线程,
但是这种实现多线程的方式有一个缺点:java中只有单继承,如果一个类继承了另一个类,那么就无法继承Thread类
- 通过实例化Thread来创建新的线程
- 每个线程都是通过某个特定的Thread对象所对应的run()来完成其操作的,
- 通过调用start()方法实现线程的启动(调用run方法不会启动此线程,只是普通的调用方法)
通过实现Runnable接口来实现多线程:
为了解决继承Thread类后不能继承别的类的问题,我们还可以通过Runnable接口来实现多线程:
但是Runnable接口只有一个run()方法,上面我们说过了,只有通过调用start()方法才能启动线程,所以我们可以通过实例化Thread类,然后将实现了Runnable接口的对象传入。通过这种将对象包装为Thread类来调用start()方法,实现线程的启动