今天继续昨天的线程的基本操作
昨天说到的有创建,启动、终止、中断、挂起
今天学习到的是join和yeild,
join是主线程等待其它线程结束在执行,yeild礼让,但是不一定让出去了
守护线程:后台执行如GC setDaemon(true)
优先级:setPriority()
基本线程同步操作
synchronize:制定枷锁对象,给定对象枷锁,进入同步块需要获取锁
给实体类的方法默认的为实例对象本身,静态方式指的是类对象
Object.wait、Object.notify、Object.notifyAll
wait,获取monitor的线程释放锁,进入等待状态(不同于Thread.sleep 不释放锁)
notify/notifyAll通知等待线程可以去争取锁了
jvm里的内存模型
JMM---主内存存放我们的共享数据、线程工作内存需要数据从主内存读取创建副本
操作完后再把值赋值给主内存数据
3个概念:原子性、有序性、可见性
原子性:操作不可打断,一致性,要么执行要么不执行
一般我们用synchronize、lock保证原子性
有序性、可见性:分别是顺序和共享数据的操作读写都可见,我们一般在变量上添加
valatile关键字或者上面的同步块或者lock(并发时没法保证这些的)
----------=----------------华丽的的end线坚持了一周了,继续加油-----------------------------
网友评论