Java多线程相关概念
一把锁
两个并
并发:(秒杀抢购,同一时刻同时处理多个请求)
- 在同一个实体上的多个事件
- 是在一台处理器上”同时“处理多个任务
- 同一时刻,其实只有一个事件在发生
并行:
- 是在不同实体上的多个事件
- 在多台处理器上同时处理多个任务
三个程
-
进程:就是系统中运行的任何一个应用程序
-
线程:也被称为轻量级进程,在同一个进程里面会有多个线程来完成进程的任务
-
管城:Moinitor(监视器)也就是我们说的锁
比如下面的o就是管程
Object o=new Object();
new Thread(()->{
synchronized(o){
}
})
用户线程和守护线程
一般情况下不做特别说明配置,默认都是用户线程 用户线程:是系统的工作线程,他会完成这个程序需要完成的业务操作 守护线程:一个服务线程,如果用户线程结束,守护线程也就结束了 isDaemon() 判断一个线程是否是守护线程
public class DamonDemo {
public static void main(String[] args) {
Thread ti=new Thread(()->{
System.out.println(Thread.currentThread().getName()+"开始运行"+
(Thread.currentThread().isDaemon()?"守护线程":"用户线程"));
while (true){
}
});
//设置守护线程必须在start前面
ti.setDaemon(true);
ti.start();
System.out.println(Thread.currentThread().getName()+"开始运行"+
(Thread.currentThread().isDaemon()?"守护线程":"用户线程"));
//用户线程结束,守护线程也会伴随着结束
}
}