Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 627483
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 13, 20262026-05-13T19:32:01+00:00 2026-05-13T19:32:01+00:00

I’m on Java concurrency at the moment. I don’t know how to write negative

  • 0

I’m on Java concurrency at the moment.

I don’t know how to write negative scenario test.

I need a way to make deadlocks and I need a way to see that without using synchronization
I could end up with problems like inconsistency.

What is generally best way to write some stress test code
that could show me bad results if synch is omitted?

Any code example would be really appriciated.

Thank you all in advance!

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-13T19:32:02+00:00Added an answer on May 13, 2026 at 7:32 pm

    The following code will almost certainly create a deadlock and demonstrates the classic deadlock scenario whereby two different threads acquire locks in an inconsistent order.

    public class Main {
      private final Object lockA = new Object();
      private final Object lockB = new Object();
    
      public static void main(String[] args) {
        new Main();
      }
    
      public Main() {
        new Thread(new Runnable() {
          public void run() {
            a();
            sleep(3000L); // Add a delay here to increase chance of deadlock.
            b();
          }
        }, "Thread-A").start();
    
        new Thread(new Runnable() {
          public void run() {
            // Note: Second thread acquires locks in the reverse order of the first!
            b();
            sleep(3000L); // Add a delay here to increase chance of deadlock.
            a();
          }
        }, "Thread-A").start();
      }
    
      private void a() {
        log("Trying to acquire lock A.");
    
        synchronized(lockA) {
          log("Acquired lock A.");
        }
      }
    
      private void b() {
        log("Trying to acquire lock B.");
    
        synchronized(lockB) {
          log("Acquired lock B.");
        }
      }
    
      private void sleep(long millis) {
        try {
          Thread.sleep(millis);
        } catch(InterruptedException ex) {
        }
      }
    
      private void log(String msg) {
        System.err.println(String.format("Thread: %s, Message: %s",
          Thread.currentThread().getName(), msg));
      }
    }
    

    The following code demonstrates a situation likely to create inconsistent results due to lack of concurrency control between two threads.

    public class Main {
      // Non-volatile integer "result".
      private int i;
    
      public static void main(String[] args) {
        new Main();
      } 
    
      public Main() {
        Thread t1 = new Thread(new Runnable() {
          public void run() {
            countUp();
          }
        }, "Thread-1");
    
        Thread t2 = new Thread(new Runnable() {
          public void run() {
            countDown();
          }
        }, "Thread-2");
    
        t1.start();
        t2.start();
    
        // Wait for two threads to complete.
        t1.join();
        t2.join();
    
        // Print out result.  With correct concurrency control we expect the result to
        // be 0.  A non-zero result indicates incorrect use of concurrency.  Also note
        // that the result may vary between runs because of this.
        System.err.println("i: " + i);
      }
    
      private void countUp() {
        // Increment instance variable i 1000,000 times.  The variable is not marked
        // as volatile, nor is it accessed within a synchronized block and hence
        // there is no guarantee that the value of i will be reconciled back to main
        // memory following the increment.
        for (int j=0; j<1000000; ++j) {
          ++i;
        }
      }
    
      private void countDown() {
        // Decrement instance variable i 1000,000 times.  Same consistency problems
        // as mentioned above.
        for (int j=0; j<1000000; ++j) {
          --i;
        }
      }
    }
    
    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Ask A Question

Stats

  • Questions 415k
  • Answers 415k
  • Best Answers 0
  • User 1
  • Popular
  • Answers
  • Editorial Team

    How to approach applying for a job at a company ...

    • 7 Answers
  • Editorial Team

    What is a programmer’s life like?

    • 5 Answers
  • Editorial Team

    How to handle personal stress caused by utterly incompetent and ...

    • 5 Answers
  • Editorial Team
    Editorial Team added an answer What you need is to protect the traffic between your… May 15, 2026 at 8:55 am
  • Editorial Team
    Editorial Team added an answer In /System/Library/Frameworks/JavaVM.framework/Versions you'll see all the installed JDKs. There is… May 15, 2026 at 8:55 am
  • Editorial Team
    Editorial Team added an answer The best option is to refactor whatever logic you have… May 15, 2026 at 8:55 am

Trending Tags

analytics british company computer developers django employee employer english facebook french google interview javascript language life php programmer programs salary

Top Members

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.