ArrayBlockingQueue:底层是数组,有界。
LinkedBlockingQueue:底层是链表,五界。但不是真正的无界,最大为int的最大值
常用方法:
put():将参数放入队列,如果放不进去会阻塞
take():取出第一个数据,取不到会阻塞
Volatile:
1、堆内存是唯一的,每一个线程都有自己的栈内存
2、每一个线程在使用堆里面的变量的时候,都会先拷贝一份到变量的副本中(线程栈)
3、在线程中,每一次使用是从变量副本中获取的。
使用:在变量前面加上volatile
PS:用volatile修饰的变量,线程在每次使用变量的时候,都会读取变量修改后的最的值。