上天:
锻炼解决问题能力
高并发 缓存 大流量 大数据量
下地:
面试
JVM OS 算法 线程 IO
基本概念
进程 线程(是一个程序里面不同的执行路径) 协程/纤程(quasar)
创建线程的方式
1. 继承Thread类 2. 实现Runnable接口 3. 通过线程池Executors启动 或者 是通过Lambda表达式创建
public class T02_HowToCreateThread {
static class MyThread extends Thread{
public void run(){ System.out.println("Hello MyThread");}
}
static class MyRun implements Runnable{
@Override
public void run() { System.out.println("Hello MyRun"); }
}
public static void main(String[] args) {
new MyThread().start();
new Thread(new MyRun()).start();
兰姆达表达式
new Thread(()->{System.out.println("hello lambda!");}).start();
}
}
synchronized关键字。 synchronized是可重入锁
synchronized的底层实现:
JDK早起,synchronized是重量级的, 向OS(操作系统)申请锁
后来做了改进, 进行了锁升级
synchronized(Object). markword记录这个线程ID
执行时间(加锁代码执行时间)比较短,线程数比较少用自旋锁
执行时间比较长,线程数比较多用系统锁
volatile
保证线程可见性
禁止指令重排序