Java复习笔记(三)多线程概述
程序员文章站
2022-05-05 22:03:12
...
一、相关知识储备
1.进程与线程的关系:进程是程序的一次执行,一个进程有多个线程,这些线程共享此进程的所有系统资源
2.线程的状态:
初始状态:创建了一个线程对象
就绪状态:线程具备运行的所有条件,在就绪队列中,在等待操作系统调度
运行状态:线程正被CPU处理
阻塞状态:线程在等待一个事件,逻辑上不可执行,在阻塞队列中
结束状态:线程执行结束,也就是run方法执行结束
3.多线程
多线程编程是指让程序使用多个线程同时分别做一件事情的不同部分,或者同时做不同的事情。但并不是所有的事情都适合多线程,多线程编程的目的是提高程序执行效率、提高人们工作效率等
4.并发与并行
线程安全:经常用来描绘一段代码。指在并发的情况之下,该代码经过多线程使用,线程的调度顺序不影响任何结果。这个时候使用多线程,我们只需要关注系统的内存,cpu是不是够用即可。反过来,线程不安全就意味着线程的调度顺序会影响最终结果,如不加事务的转账:
void transferMoney(User from, User to, float amount){
to.setMoney(to.getBalance() + amount);
from.setMoney(from.getBalance() - amount);
}
同步:Java中的同步指的是通过人为的控制和调度,保证共享资源的多线程访问成为线程安全,来保证结果的准确。如上面的代码简单加入@synchronized关键字。在保证结果准确的同时,提高性能,才是优秀的程序。线程安全的优先级高于性能。