本章是编程基础,简述一下,多线程编程常用到得包、类等~ 可用于多线程的快速查阅
Java多线程经过2个重要的发展阶段,第一阶段是JDK5.0以前,第二阶段是JDK5.0以后。 JDK5.0引入java.util.concurrent包,极大地扩充了多线程的功能。
多线程相关类解释
线程创建
java.lang.Runnable
接口:主要用于创建新线程,通过实例化子类,创建新线程。继承需要覆盖run()方法。
java.lang.Thread
类:主要用于创建新线程,及静态方法,是Runnable接口的子类,通常使用.sleep()等静态方法。
Callable
模板类:主要用于创建带返回值的的线程,返回值用Future 接收
ExecutorService&ScheduledExecutorService
类:主要用于创建线程池&周期性调度的线程池,使用Executors.new*()方法创建。
线程调度
线程状态改变6大函数:
- wait()/当前线程等待,直到有其他线程调用notify*()
- jion()/将调用线程加到环境线程中,暂停环境线程的执行,直到调用线程执行完毕
- yeild()/静态方法 暂停当前线程执行,并重新选择执行的线程
- notify()/唤醒一个后台线程
- notifyAll()/唤醒所有后台等待的线程
- sleep()/静态方法,当前线程延时n个单位(ms)
线程互斥&同步
synchronized
Java 关键字:互斥锁,通常用于给代码段,或者方法加锁,确保互斥访问。
- 静态方法使用类锁,静态方法之间互斥;
- 非静态方法使用对象锁,非静态方法之间互斥。
- 但是静态方法与非静态方法之间不互斥!
Lock&ReentrantLock
类:互斥锁,使用lock.lock();加锁,使用lock.unlock();放锁,常用于互斥操作。
Semaphore
类:信号量,定时初始值,使用signal.acquire();获得一个信号量,使用signal.release();方法释放一个信号量。
其他
java.util.concurrent;
包:(JDK5.0引入)主要包含线程池、有返回值的线程、锁对象、信号量、阻塞队列、阻塞栈、条件变量、原子量、障碍器等。
上一章: 绪论-Java多线程理论基础
下一章: 线程创建的4种方式