java多线程基础
创建线程的两种方式,第三种是再jdk1.8后第二种的变形。
1.继承Thread 2.实现Runnable接口 3.Executors.newCachedThread通过线程池也可以启线程。
线程常用方法:
sleep()当前线程睡眠,把资源让出来给其他线程
yield()让出一下cpu资源,可能立马回来执行,更大可能让队列里其他线程执行。
join() 有两个线程t1,t2 再t2中调用t1.join()等t2执行结束后t1再执行。
synchronized 可重入锁
Automic、Lock、sync属于自旋锁,适合线程少,执行时间短(加锁代码)的场景;执行时间长,线程数量多,使用系统锁
synch : 1.锁的是对象不是代码 2.this xxx.class 3.锁定方法 费锁定方法同时执行 4.锁升级 - 偏向所 自旋锁 重量级锁