进程和线程的概念
-
进程:程序(任务)的执行过程。
持有资源(共享内存,共享文件)和线程
-
线程:系统中最小的执行单元。
同一进程中有多个线程。
线程共享进程的资源。
线程的交互:互斥/同步
Java语言对线程的支持示意图:
Thread常用方法:
线程的创建:Thread(String name) / Thread(Runnable target)
线程的方法:
- 启动线程:void start()
- 线程休眠:void sleep(long millis)
- 使其他线程等待当前线程终止:void join(long millis)
- 当前运行线程释放处理器资源:void yield()
获取当前线程引用:static Thread currentThread()
停止线程的方法:
- stop方法(不推荐)
- 使用退出标志位(推荐)
- interrupt方法(初衷:不是为了停止线程,而是中断线程)
线程的交互:互斥与同步
- 互斥的实现:synchronized(intrinsic lock)
- 同步的实现:wait()/notify()/notifyAll()
总结:
创建线程的三种方式对比:
1.采用实现Runnable,Callable接口的方式创建多线程
- 优势是:线程类知识实现了Runnable或Callable接口,还可以继承其他类
- 在这种方式下,多个线程可以共享同一个target对象,所以非常适合多个相同线程来处理同一份资源的情况。
- 劣势是:编程比较复杂,访问当前线程必须使用Thread.currentThread()方法
2.采用继承Thread类的方式创建多线程
- 优势是:编写简单,访问当前线程直接使用this即可。
- 劣势是:因为线程类已经继承了Thread类,所以不能再继承其他父类。
一般推荐采用实现Runnable接口,Callable接口的方式来创建多线程。
-