基础概念
CPU核心数和线程数的关系
核心数:线程数=1:1 ;使用了超线程技术后—> 1:2
CPU时间片轮转机制
又称RR调度,会导致上下文切换
什么是进程和线程
进程:程序运行资源分配的最小单位,进程内部有多个线程,会共享这个进程的资源
线程:CPU调度的最小单位,必须依赖进程而存在。
澄清并行和并发
并行:同一时刻,可以同时处理事情的能力
并发:与单位时间相关,在单位时间内可以处理事情的能力
高并发编程的意义、好处和注意事项
好处:充分利用cpu的资源、加快用户响应的时间,程序模块化,异步化
问题:
线程共享资源,存在冲突;
容易导致死锁;
启用太多的线程,就有搞垮机器的可能
Java线程
实现方式
Thread,Runnable,Callable
中断线程
1、interrupt()
2、方法里如果抛出InterruptedException,线程的中断标志位会被复位成false,如果确实是需要中断线程,要求我们自己在catch语句块里再次调用interrupt()。
public class ThreadTest {
public static void main(String[] args) throws InterruptedException {
Thread thread = new Thread(new User());
thread.start();
Thread.sleep(50);
thread.interrupt();
}
}
class User implements Runnable{
@Override
public void run() {
while (!Thread.currentThread().isInterrupted()){
System.out.println(Thread.currentThread().getName()+"+1");
}
System.out.println(Thread.currentThread().getName()+"+2");
}
}
线程状态
守护线程
Synchronized
对象锁,锁的是类的对象实例。
类锁 ,锁的是每个类的的Class对象,每个类的的Class对象在一个虚拟机中只有一个,所以类锁也只有一个。