Normal
Zwei Fehler:- deine Semaphore Variable `sem` ist aktuell eine Instanzvariable/ein Instanzfeld, somit bekommt jede ConcurrentTask Instanz seine eigene Semaphore-Instanz, was nichts bringt, weil ja jetzt beide Threads/Tasks nicht mehr auf dasselbe Objekt synchornisieren. Also entweder du wandelst das Feld in ein statisches Feld um, damit auch beide ConcurrentTask-Instanzen auf dieselbe Semaphore synchronisieren, oder aber du gibst beiden Threads im Konstruktoraufruf dieselbe ConcurrentTask Instanz (instanziierst diese also nur einmal).- die Methoden, die du auf der Semaphore verwenden solltest, sind acquire() (oder acquireUninterruptibly()) und release()
Zwei Fehler:
- deine Semaphore Variable `sem` ist aktuell eine Instanzvariable/ein Instanzfeld, somit bekommt jede ConcurrentTask Instanz seine eigene Semaphore-Instanz, was nichts bringt, weil ja jetzt beide Threads/Tasks nicht mehr auf dasselbe Objekt synchornisieren. Also entweder du wandelst das Feld in ein statisches Feld um, damit auch beide ConcurrentTask-Instanzen auf dieselbe Semaphore synchronisieren, oder aber du gibst beiden Threads im Konstruktoraufruf dieselbe ConcurrentTask Instanz (instanziierst diese also nur einmal).
- die Methoden, die du auf der Semaphore verwenden solltest, sind acquire() (oder acquireUninterruptibly()) und release()