1.线程和进程和程序
程序:多个进程的集合(一个程序至少一个进程)
进程:线程的集合(一个进程至少一个线程)
线程:一个执行路径
2.什么是线程安全问题
当两个或者多个线程共享一个全局变量对其做写的操作的时候,结果可能出现误差.
3.多线程之间同步
1)同步代码块:
就是被包裹的代码只能有一个线程进入
synchronized(锁){
代码
}
2).同步函数
在方法上加上synchronized 就是同步函数
public synchronized 方法返回类型 方法名字()
{
代码
}
3. lock锁
Lock lock = new ReentrantLock();
lock.lock();
try{
//可能会出现线程安全的操作
}finally{
//一定在finally中释放锁
//也不能把获取锁在try中进行,因为有可能在获取锁的时候抛出异常
lock.ublock();
}
3.多线程死锁
同步中嵌套同步,导致锁没法释放,产生死锁.
4.多线程三大特性:
1)原子性: 就是程序的完整性,要么做完这个事情,要么就不做,不能做一半不做。
2)可见性:Java内存模型中的本地内存能否通讯。
3)有序性:程序执行的顺序按照代码的先后顺序执行。
5守护线程和非守护线程:
Java中有两种线程,一种是用户线程,另一种是守护线程。
用户线程是指用户自定义创建的线程,主线程停止,用户线程不会停止
守护线程当进程不存在或主线程停止,守护线程也会被停止。
6.多线程运行状态
新建 就绪 阻塞 运行 死亡