标签:block 优先级 isalive ima 执行 无限 alt join() 工厂
第一章
几个概念
并发级别:
JMM(Java的内存模型)建立原则:原子性,可见性,有序性
原子性:操作不可分,一旦执行不会被干扰
可见性:一个线程修改了一个共享变量的值,其他变量能否立刻知道此修改
有序性:程序执行顺序问题(由指令重排导致)
第二章
1.进程与线程
2.线程的基本操作
wait(),notify()必须是包含在synchronzied语句中的----notify()随机唤醒一个线程,notifyAll()全部唤醒。
可以看出来当前等待对象threadA会一直阻塞,直到被等待对象threadB结束后即isAlive()返回false的时候才会结束while循环,当threadB退出时会调用notifyAll()方法通知所有的等待线程.
public static native void yield();这是一个静态方法,一旦执行,它会是当前线程让出CPU,但是,需要注意的是,让出的CPU并不是代表当前线程不再运行了,如果在下一次竞争中,又获得了CPU时间片当前线程依然会继续运行.另外,让出的时间片只会分配给当前线程相同优先级的线程.
3.对于经常修改的字段类型,可以使用字段volatile确保线程改动数据后其他线程可以看到此改动。
4.线程组
5.守护线程,执行系统的工作线程(Daemon)
6.线程优先级
7.synchronized关键字
并发下的错误:
ArrayList:线程不安全(访问时破坏了内部一致性、访问时保存容器大小的变量访问异常)——————使用Vector
HashMap:线程不安全(可能结构破坏出现环导致无法退出)——————————————————使用ConcurrentHashMap
i++本质:i=Integer.valueOf(i.intValue()+1);其中,Integer.valueOf是一个工厂方法,每次创建一个新的Integer对象,并将其引用复制给i
i++
标签:block 优先级 isalive ima 执行 无限 alt join() 工厂
原文地址:https://www.cnblogs.com/lvoooop/p/12021668.html