Semaphore信号量用法
    1.一次获取或释放多个许可证
    比如TaskA会调用消耗资源的method1(),而TaskB会调用不是太好资源的method2(),假设一共5许可证。那么我们就可以要求TaskA获取5个许可证 才能执行,而TaskB只需要获取到一个许可证就能执行,这样就能避免A和B同时运行的情况,我们可以根据自己的需求合理分配资源

    2.获取和释放的许可证数量必须一致,否则每次获取随着时间的推移,最后许可证数量不够用,会导致程序卡死

    3.注意初始化Semaphore的时候设置公平性,一般设置true会更合理;信号量一般用于执行时间慢的程序,如果非公平会导致一些线程无法得到执行