让其他线程变成等待
Join
Join(毫秒)等待完后,不管主线程如何,继续执行
并行操作:原子性,可见性,有序性
原子性:保证数据的一致性,线程安全的一部分
可见性:当一个线程修改了变量,其他线程可以了解拿到数据
有序性:不保证某个线程全部按序执行
区别: Jvm内存结构:堆、栈、方法区
Jmm内存模型:
Count 共享全局变量
主内存:共享数据都会存在主内存中
每个线程,都有私有本地内存,相当于把主内存copy到本地私有内存(线程不可见,存在安全隐患)
Volatile:让变量让其他线程及时可见(强制刷新到主内存中)不解决并发问题不具有原子性和同步性 Atomicinteger:
原子类,.incrementAndGet(),相当于count++,可解决volatile原子性问题(只执行当前线程)
TrreadLoca:线程的局部变量,每个线程单独用自己的变量。
线程池:用线程池管理线程,因为启动或停止线程,耗资源。要节约内存。企业开发中都用并且用spring整合线程池。