编程语言
首页 > 编程语言> > 周会材料:高并发程序设计<一>

周会材料:高并发程序设计<一>

作者:互联网

第一章

几个概念

并发级别:

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++

标签:周会,材料,CPU,线程,Integer,执行,等待,并发程序,资源
来源: https://www.cnblogs.com/lvoooop/p/12021668.html