Semaphore implementation exceptionPorting Java semaphore to MacOSXImplementation of a lock-free fixed-sized allocatorFast non-fair semaphore“Barbershop”-esque Semaphore ImplementationUnfair semaphore in JavaImplementation of stackA very basic semaphore in JavaSimple counting fair semaphore implementationSemaphore of size 1Semaphore skipping additional threads

WiFi Thermostat, No C Terminal on Furnace

Drawing ramified coverings with tikz

Does a 'pending' US visa application constitute a denial?

Lowest total scrabble score

What should you do if you miss a job interview (deliberately)?

What was the exact wording from Ivanhoe of this advice on how to free yourself from slavery?

Is the U.S. Code copyrighted by the Government?

How could a planet have erratic days?

How should I respond when I lied about my education and the company finds out through background check?

What is this called? Old film camera viewer?

How to implement a feedback to keep the DC gain at zero for this conceptual passive filter?

How do you respond to a colleague from another team when they're wrongly expecting that you'll help them?

Fear of getting stuck on one programming language / technology that is not used in my country

How to indicate a cut out for a product window

What should you do when eye contact makes your subordinate uncomfortable?

Where does the bonus feat in the cleric starting package come from?

Redundant comparison & "if" before assignment

What is the evidence for the "tyranny of the majority problem" in a direct democracy context?

When were female captains banned from Starfleet?

Biological Blimps: Propulsion

Should I stop contributing to retirement accounts?

Yosemite Fire Rings - What to Expect?

On a tidally locked planet, would time be quantized?

Open a doc from terminal, but not by its name



Semaphore implementation exception


Porting Java semaphore to MacOSXImplementation of a lock-free fixed-sized allocatorFast non-fair semaphore“Barbershop”-esque Semaphore ImplementationUnfair semaphore in JavaImplementation of stackA very basic semaphore in JavaSimple counting fair semaphore implementationSemaphore of size 1Semaphore skipping additional threads













0












$begingroup$



I am not sure why below code is throwing exception. If I implement the
same code with synchronized at method level then there is no
exception, and it works fine. I think using object lock should also
not have any issue.enter code here




 package practice;

public class CustomSemaphore

int count;
int capacity;
Object lock = new Object();

public CustomSemaphore(int capacity)
this.count = capacity;


public void acquire() throws InterruptedException
synchronized (lock)
while (count > capacity)
wait();

count++;
System.out.println(Thread.currentThread().getName() + " got lock and working now");




public void release()
synchronized (lock)
count--;
notify();
System.out.println("releasing resource now");




public static void main(String[] args) throws InterruptedException
final CustomSemaphore sem = new CustomSemaphore(1);
Runnable acquireTask = new Runnable()

@Override
public void run()
while (true)
try
sem.acquire();
System.out.println(" acquired lock" + Thread.currentThread().getName());
catch (InterruptedException e)
// TODO Auto-generated catch block
e.printStackTrace();




;
Thread acqThread = new Thread(acquireTask, "acquire");

Runnable releaseTask = new Runnable()

@Override
public void run()
while (true)
sem.release();


;
Thread releaseThread = new Thread(releaseTask, "release");
acqThread.start();
releaseThread.start();
acqThread.join();
releaseThread.join();




}









share|improve this question









$endgroup$
















    0












    $begingroup$



    I am not sure why below code is throwing exception. If I implement the
    same code with synchronized at method level then there is no
    exception, and it works fine. I think using object lock should also
    not have any issue.enter code here




     package practice;

    public class CustomSemaphore

    int count;
    int capacity;
    Object lock = new Object();

    public CustomSemaphore(int capacity)
    this.count = capacity;


    public void acquire() throws InterruptedException
    synchronized (lock)
    while (count > capacity)
    wait();

    count++;
    System.out.println(Thread.currentThread().getName() + " got lock and working now");




    public void release()
    synchronized (lock)
    count--;
    notify();
    System.out.println("releasing resource now");




    public static void main(String[] args) throws InterruptedException
    final CustomSemaphore sem = new CustomSemaphore(1);
    Runnable acquireTask = new Runnable()

    @Override
    public void run()
    while (true)
    try
    sem.acquire();
    System.out.println(" acquired lock" + Thread.currentThread().getName());
    catch (InterruptedException e)
    // TODO Auto-generated catch block
    e.printStackTrace();




    ;
    Thread acqThread = new Thread(acquireTask, "acquire");

    Runnable releaseTask = new Runnable()

    @Override
    public void run()
    while (true)
    sem.release();


    ;
    Thread releaseThread = new Thread(releaseTask, "release");
    acqThread.start();
    releaseThread.start();
    acqThread.join();
    releaseThread.join();




    }









    share|improve this question









    $endgroup$














      0












      0








      0





      $begingroup$



      I am not sure why below code is throwing exception. If I implement the
      same code with synchronized at method level then there is no
      exception, and it works fine. I think using object lock should also
      not have any issue.enter code here




       package practice;

      public class CustomSemaphore

      int count;
      int capacity;
      Object lock = new Object();

      public CustomSemaphore(int capacity)
      this.count = capacity;


      public void acquire() throws InterruptedException
      synchronized (lock)
      while (count > capacity)
      wait();

      count++;
      System.out.println(Thread.currentThread().getName() + " got lock and working now");




      public void release()
      synchronized (lock)
      count--;
      notify();
      System.out.println("releasing resource now");




      public static void main(String[] args) throws InterruptedException
      final CustomSemaphore sem = new CustomSemaphore(1);
      Runnable acquireTask = new Runnable()

      @Override
      public void run()
      while (true)
      try
      sem.acquire();
      System.out.println(" acquired lock" + Thread.currentThread().getName());
      catch (InterruptedException e)
      // TODO Auto-generated catch block
      e.printStackTrace();




      ;
      Thread acqThread = new Thread(acquireTask, "acquire");

      Runnable releaseTask = new Runnable()

      @Override
      public void run()
      while (true)
      sem.release();


      ;
      Thread releaseThread = new Thread(releaseTask, "release");
      acqThread.start();
      releaseThread.start();
      acqThread.join();
      releaseThread.join();




      }









      share|improve this question









      $endgroup$





      I am not sure why below code is throwing exception. If I implement the
      same code with synchronized at method level then there is no
      exception, and it works fine. I think using object lock should also
      not have any issue.enter code here




       package practice;

      public class CustomSemaphore

      int count;
      int capacity;
      Object lock = new Object();

      public CustomSemaphore(int capacity)
      this.count = capacity;


      public void acquire() throws InterruptedException
      synchronized (lock)
      while (count > capacity)
      wait();

      count++;
      System.out.println(Thread.currentThread().getName() + " got lock and working now");




      public void release()
      synchronized (lock)
      count--;
      notify();
      System.out.println("releasing resource now");




      public static void main(String[] args) throws InterruptedException
      final CustomSemaphore sem = new CustomSemaphore(1);
      Runnable acquireTask = new Runnable()

      @Override
      public void run()
      while (true)
      try
      sem.acquire();
      System.out.println(" acquired lock" + Thread.currentThread().getName());
      catch (InterruptedException e)
      // TODO Auto-generated catch block
      e.printStackTrace();




      ;
      Thread acqThread = new Thread(acquireTask, "acquire");

      Runnable releaseTask = new Runnable()

      @Override
      public void run()
      while (true)
      sem.release();


      ;
      Thread releaseThread = new Thread(releaseTask, "release");
      acqThread.start();
      releaseThread.start();
      acqThread.join();
      releaseThread.join();




      }






      java multithreading concurrency






      share|improve this question













      share|improve this question











      share|improve this question




      share|improve this question










      asked 10 mins ago









      AKSAKS

      1161




      1161




















          0






          active

          oldest

          votes











          Your Answer





          StackExchange.ifUsing("editor", function ()
          return StackExchange.using("mathjaxEditing", function ()
          StackExchange.MarkdownEditor.creationCallbacks.add(function (editor, postfix)
          StackExchange.mathjaxEditing.prepareWmdForMathJax(editor, postfix, [["\$", "\$"]]);
          );
          );
          , "mathjax-editing");

          StackExchange.ifUsing("editor", function ()
          StackExchange.using("externalEditor", function ()
          StackExchange.using("snippets", function ()
          StackExchange.snippets.init();
          );
          );
          , "code-snippets");

          StackExchange.ready(function()
          var channelOptions =
          tags: "".split(" "),
          id: "196"
          ;
          initTagRenderer("".split(" "), "".split(" "), channelOptions);

          StackExchange.using("externalEditor", function()
          // Have to fire editor after snippets, if snippets enabled
          if (StackExchange.settings.snippets.snippetsEnabled)
          StackExchange.using("snippets", function()
          createEditor();
          );

          else
          createEditor();

          );

          function createEditor()
          StackExchange.prepareEditor(
          heartbeatType: 'answer',
          autoActivateHeartbeat: false,
          convertImagesToLinks: false,
          noModals: true,
          showLowRepImageUploadWarning: true,
          reputationToPostImages: null,
          bindNavPrevention: true,
          postfix: "",
          imageUploader:
          brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
          contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
          allowUrls: true
          ,
          onDemand: true,
          discardSelector: ".discard-answer"
          ,immediatelyShowMarkdownHelp:true
          );



          );













          draft saved

          draft discarded


















          StackExchange.ready(
          function ()
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fcodereview.stackexchange.com%2fquestions%2f216095%2fsemaphore-implementation-exception%23new-answer', 'question_page');

          );

          Post as a guest















          Required, but never shown

























          0






          active

          oldest

          votes








          0






          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes















          draft saved

          draft discarded
















































          Thanks for contributing an answer to Code Review Stack Exchange!


          • Please be sure to answer the question. Provide details and share your research!

          But avoid


          • Asking for help, clarification, or responding to other answers.

          • Making statements based on opinion; back them up with references or personal experience.

          Use MathJax to format equations. MathJax reference.


          To learn more, see our tips on writing great answers.




          draft saved


          draft discarded














          StackExchange.ready(
          function ()
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fcodereview.stackexchange.com%2fquestions%2f216095%2fsemaphore-implementation-exception%23new-answer', 'question_page');

          );

          Post as a guest















          Required, but never shown





















































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown

































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown







          Popular posts from this blog

          名間水力發電廠 目录 沿革 設施 鄰近設施 註釋 外部連結 导航菜单23°50′10″N 120°42′41″E / 23.83611°N 120.71139°E / 23.83611; 120.7113923°50′10″N 120°42′41″E / 23.83611°N 120.71139°E / 23.83611; 120.71139計畫概要原始内容臺灣第一座BOT 模式開發的水力發電廠-名間水力電廠名間水力發電廠 水利署首件BOT案原始内容《小檔案》名間電廠 首座BOT水力發電廠原始内容名間電廠BOT - 經濟部水利署中區水資源局

          Prove that NP is closed under karp reduction?Space(n) not closed under Karp reductions - what about NTime(n)?Class P is closed under rotation?Prove or disprove that $NL$ is closed under polynomial many-one reductions$mathbfNC_2$ is closed under log-space reductionOn Karp reductionwhen can I know if a class (complexity) is closed under reduction (cook/karp)Check if class $PSPACE$ is closed under polyonomially space reductionIs NPSPACE also closed under polynomial-time reduction and under log-space reduction?Prove PSPACE is closed under complement?Prove PSPACE is closed under union?

          Is my guitar’s action too high? Announcing the arrival of Valued Associate #679: Cesar Manara Planned maintenance scheduled April 23, 2019 at 23:30 UTC (7:30pm US/Eastern)Strings too stiff on a recently purchased acoustic guitar | Cort AD880CEIs the action of my guitar really high?Μy little finger is too weak to play guitarWith guitar, how long should I give my fingers to strengthen / callous?When playing a fret the guitar sounds mutedPlaying (Barre) chords up the guitar neckI think my guitar strings are wound too tight and I can't play barre chordsF barre chord on an SG guitarHow to find to the right strings of a barre chord by feel?High action on higher fret on my steel acoustic guitar