【java基础】多线程编程

1、线程与进程

程序是一段静态代码。
进程是程序的一次动态执行过程(代码加载,执行之执行完毕)。
线程是比进程更小的执行单元,一个进程执行过程中可以产生多个线程。

2、Java的多线程机制

Java一大特点:支持多线程。多线程是指一个应用程序中同时存在几个执行体,线程的中断与恢复可以更加节省系统的开销。
每一个Java应用程序都有一个默认的主线程。比如main方法(主线程),如果主线程中再创建线程,即成为其他线程。

3、线程的生命周期

新建 使用Thread类及其子类表示线程。
运行 调用start()方法通知JVM,run()方法执行。如果线程是Thread的子类创建的,需要重写run()方法,run()方法没有结束之前不能再让线程执行start方法,否则会产生异常(ILLegalThreadStateException)。
中断 线程切换,
执行了sleep()方法进入休眠状态,
执行了wait()方法进入等待状态,
执行某操作,进入阻塞状态。
死亡 线程完成了全部工作,结束了run()方法,
强制性终止。

4、Thread类

创建线程
通常使用的构造方法Thread(Runnable target)。参数是Runnable类型的接口。
常用方法
start() 启动线程,线程就绪。
run() 执行,完成实际操作。
sleep(int ) 休眠,暂停一段时间。
isalive() 新建状态时为false,run状态(死亡之前)时为true
currentThread() 返回当前线程
interrupt() 唤醒休眠线程重新排队,interruptException异常抛出

多线程的实现

(1)继承Thread类,重写run()方法
(2)实现Runnable接口,并实现接口的run()方法
(3)实现Callable接口,重写call()方法
推荐使用(2)

5、线程同步

多个线程同时访问或(某一个线程要)修改一个变量。
需要使用synchronized修饰的方法,当一个线程A使用这个方法,其他线程想使用需等待A完成。同步机制保证资源的安全,而异步能提高程序的效率。
想实现同步操作,必须获得每一个线程对象的锁。
实现的方法
(1)用synchronized修饰方法或某一块代码。
(2)wait()中断方法执行,使本线程等待,允许其他线程使用同步方法。
notifyAll()通知所有处于等待的线程结束等待。
notify() 通知某一线程结束等待。
(3)Lock接口及实现类ReentrantLock,
方法:lock()获取锁、tryLock()、lockInterrupttibly()
不要同时使用(1)与(3)

终止线程

stop方法与suspend方法,但它们不安全。
一般建议让线程自动结束。
守护线程与用户线程
线程合并join方法
主线程执行完run方法后,再执行join后面的代码。
设置线程优先级

线程安全

共享资源避开存取,安排时间调度。
线程池Executors
定长线程池,可缓存线程池

发布了23 篇原创文章 · 获赞 24 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_41022866/article/details/103962668
今日推荐