上天: 

   锻炼解决问题能力

  高并发 缓存 大流量 大数据量

下地:

  面试

  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

    保证线程可见性

    禁止指令重排序