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

  • Home
  • SEARCH
  • 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 6344297
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 24, 20262026-05-24T20:36:35+00:00 2026-05-24T20:36:35+00:00

I need to define a shared variable in my Main class’s main() method. I

  • 0

I need to define a shared variable in my Main class’s main() method. I need two threads to be able to access that shared variable. Im creating the threads by implementing the Runnable interface and implementing the abstract run() method of the interface. How do i refer to the shared variable defined in the Main class’s main() method from within the run() method defined in my class that implements the Runnable interface? Obviously just calling them by name is not working – as they appear out of my Runnable class’s scope.

EDIT – apologies, here is a simple example

public Class DoThread implements Runnable {

    public void run(){
        sharedVar += 1
    }


}

and in a separate .class file:

public Class Main {

    public static void main(String[] args) {
        int sharedVar = 0;

        Thread t1 = new Thread(new DoThread());
        Thread t2 = new Thread(new DoThread());

        t1.start();
        t2.start();

        t1.join();
        t2.join();

    }


}

so should i be creating an object to store the shared var in and then passing that object to both the DoThread() constructors when creating the threads? I get confused sometimes between when java passes by ref or passes by var, so if i do it this way, will changes to the shared var by t1 be seen by t2?

  • 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-24T20:36:36+00:00Added an answer on May 24, 2026 at 8:36 pm

    Well, if you declare a local variable you won’t be able to refer to that anywhere other than in classes created within that method.

    Where are you implementing Runnable? If it’s in the same class, then you could either make it an instance variable and make main set the variable on the same instance that you’re creating the thread from, or make it a static variable. If Runnable is implemented in a different class, then when you construct an instance of that class you could give it the data it needs – it’s not clear exactly what that means at this point… As others have said, code would be useful. (For example, do the threads need to be able to see changes in the original data?)

    As an aside, threading is relatively advanced, whereas propagating data between classes is relatively basic. If you’re new to Java, I’d recommend getting started on easier things than threading.

    EDIT: For your example, you should use an AtomicInteger, like this:

    import java.util.concurrent.atomic.AtomicInteger;
    
    class DoThread implements Runnable {
    
        private final AtomicInteger counter;
    
        DoThread(AtomicInteger counter) {
            this.counter = counter;
        }
    
        public void run() {
            counter.incrementAndGet();
        }
    }
    
    public class Test {
        public static void main(String[] args) throws InterruptedException {
            AtomicInteger shared = new AtomicInteger(0);
    
            Thread t1 = new Thread(new DoThread(shared));
            Thread t2 = new Thread(new DoThread(shared));
    
            t1.start();
            t2.start();
    
            t1.join();
            t2.join();
    
            System.out.println(shared.get()); // Prints 2
        }
    }
    
    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I need to define the constant in the module that use the method from
I define Sql_Cmd And Other sql variable that need before and Now write this
I need to define a Wix file component that may not exist in certain
I need to define an appender for log4net in a way that I get
I need to define some constant strings that will be used only by one
Why is there a need to define a new method in RESTful controller, follow
I'm writing several WPF user controls that need both shared and individual resources. I
I need to define a calculated member in MDX (this is SAS OLAP, but
I need to define new UI Elements as well as data binding in code
I need to define multiple modules in the same file. I would like to

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.