多线程的四种实现:
1、继承Thread类
2、实现Runnable接口(相较之下比继承好,可以多个实现)
3、通过Callable和FutureTask创建线程
4、线程池创建
多线程的方法:
join()方法,同步的作用,使并行变成串行:例,正在进行线程A,如果在线程A中加入线程B的join方法,A会等线程B执行完之后再执行。
sleep()方法,不释放锁
wait()方法,释放锁
多线程的五种状态
新建、就绪、运行、等待、死亡
同步函数使用this锁
静态同步函数使用的锁是当前字节码文件对象
多线程的三大特性:原子性、可见性、有序性
volatile关键字:变量在多个线程之间可见(volatile非原子性),在多个线程之间,一个线程修改了共享全局变量的值,对其他线程是可见的(其它线程也能立马看到修改后的值)
countDownlatch 用于阻塞程序,当countdownLatch=1时,阻塞进程,countDownLatch.countDown()每次减1,当countDownLatch=0时,线程不阻塞,可用