Java 使用未知变量初始化信号量

Java 使用未知变量初始化信号量,java,multithreading,initialization,locks,Java,Multithreading,Initialization,Locks,我正试图编写一个利用信号量的程序。我有餐厅班、搬运工班和点菜班。搬运工负责从每家餐厅送餐。porter类扩展了Runnable,因此它是一个线程。每个餐厅在某一时刻只能有一定数量的司机(搬运工)送货。我使用信号量来调节在某一时刻有多少司机在开车。餐馆类有一个整数成员,表示该餐馆有多少司机。它使用类的驱动程序整数成员创建信号量。下面是我获取和发布许可证的餐馆类和porter的run()方法的图片。然而,我试图在获得任何许可证之前检查有多少许可证可用,结果得到0。当我将信号量初始化中的驱动程序替换为

我正试图编写一个利用信号量的程序。我有餐厅班、搬运工班和点菜班。搬运工负责从每家餐厅送餐。porter类扩展了Runnable,因此它是一个线程。每个餐厅在某一时刻只能有一定数量的司机(搬运工)送货。我使用信号量来调节在某一时刻有多少司机在开车。餐馆类有一个整数成员,表示该餐馆有多少司机。它使用类的驱动程序整数成员创建信号量。下面是我获取和发布许可证的餐馆类和porter的run()方法的图片。然而,我试图在获得任何许可证之前检查有多少许可证可用,结果得到0。当我将信号量初始化中的驱动程序替换为“2”时,效果很好。问题是我如何与我的驾驶员成员初始化许可证数量?

请在此处发布代码,不要发布其图像的链接。