ArrayBlockingQueue:底层是数组,有界。
    LinkedBlockingQueue:底层是链表,五界。但不是真正的无界,最大为int的最大值
    常用方法:
    put():将参数放入队列,如果放不进去会阻塞
    take():取出第一个数据,取不到会阻塞

    Volatile:
    1、堆内存是唯一的,每一个线程都有自己的栈内存
    2、每一个线程在使用堆里面的变量的时候,都会先拷贝一份到变量的副本中(线程栈)
    3、在线程中,每一次使用是从变量副本中获取的。
    使用:在变量前面加上volatile
    PS:用volatile修饰的变量,线程在每次使用变量的时候,都会读取变量修改后的最的值。