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 6912815
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 27, 20262026-05-27T09:08:21+00:00 2026-05-27T09:08:21+00:00

I want to make a method that safely stops a thread running in a

  • 0

I want to make a method that safely stops a thread running in a loop, allowing for the last loop to finish before returning control to the stopper.

Right now, no matter what I try, I freeze. Possibly out of deadlocks or whatnot; Java is not my usual environment, hence why this may be yet-another wait/notify question.

boolean isRunning = true;

@Override
public void run() {
    super.run();

    while (isRunning) {
        // Do work...
    }

    synchronized(this) {
        this.notify();
    }
}

public void stopSafely() {
    isRunning = false;

    try {
        synchronized(this) {
            this.wait();
        }
    } catch (InterruptedException ex) {
        // Handle...
    }
}

The problem with this approach (apart from the fact that I synchronize on this, but it’s for the sake of example simplicity), is that if notify gets called before wait, the caller will freeze.

I’m sure that playing with the blocks I surround in synchronized could fix the problem, but I can’t seem to get the right combination.

Any idea?

  • 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-27T09:08:21+00:00Added an answer on May 27, 2026 at 9:08 am

    Just go for the real simple solution:

    private volatile boolean isRunning = true;
    
    @Override
    public void run() {
        while (isRunning) {
            // Do work...
        }
    }
    
    public void stopThread() {
        isRunning = false;
    }
    

    that’s basically what Thread.interrupted() does internally, so you can just use this as well:

    @Override
    public void run() {
        while (Thread.interrupted()) {
            // Do work...
        }
    }
    

    in which case you have to call interrupt() on the thread.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I want to make a method that takes any file and reads it as
I want to make an interface in C# that defines a method that always
I have a method: myMethod() {} that I want to make accessible to javascript.
I want to make one SqlBulkCopy method that I can use for all my
I want to make a generic method that will take either a single object
I want to make a method, that throws a specific exception, by a parameter
I want to make a method that adds a number to another number. This
I'm implementing the IEditableObject interface and I want to make a generic method that
In the viewController class I want to make a draw method that adds an
I have a method that takes a BOOL parameter and I want to make

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.