Java并发
一、使用线程
有三种使用线程的方法:
实现 Runnable 接口;实现 Callable 接口;继承 Thread 类。
实现 Runnable 和 Callable 接口的类只能当做一个可以在线程中运行的任务,不是真正意义上的线程,因此最后还需要通过 Thread 来调用。可以理解为任务是通过线程驱动从而执行的。
1.1 继承Thread类
1.2 实现Runnable接口
1.3 实现Callable接口
二、基础线程机制
Executor、Daemon、sleep、yield
线程的sleep()方法和yield()方法有什么区别?
(1) sleep()方法给其他线程运行机会时不考虑线程的优先级,因此会给低优先级的线程以运行的机会; yield()方法只会给相同优先级或更高优先级的线程以运行的机会;
(2)线程执行sleep()方法后转入阻塞(blocked)状态,而执行yield()方法后转入就绪(ready)状态;
(3) sleep()方法声明抛出InterruptedException,而yield()方法没有声明任何异常;
(4) sleep()方法比 yield()方法(跟操作系统CPU调度相关)具有更好的可移植性。
三、中断
Interrupt、InterruptedException、interrupted
匿名内部类创建进程: