• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 256
  • Last Modified:

Java always have 10 threads running in a loop

Hi

I have a loop that basically runs indefinitely until I stop it- it is implemented with a thread because I want to be able to stop it with a button.

Inside the loop I get a value from the db, pass that value to a function that processes the value.

Then next loop is started.

Because I want to process data fast I was running 10 or 20 instances of the same application.

Now I think it would be easier to start multiple (for example 10) threads in one instance that call the processing function for "value".

How do I do this best? So that always when one thread ends a next one is created that gets a value from the db and sends it to myprocess()


This is the basic structure of the code:

==================================================

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {   

        if (a == null) {
            a = new Thread(new Runnable() {
                int counters;

                @Override
                public void run() {
                    while (true) {

-->get data from db
-->value = value from db
-->myprocess()

} //next
}
}
}
}


    public static void myprocess() {
{
do processing for the value
}

Open in new window

==================================================
Maybe also a bit of a problem that value is a defined in a variable and not passed to the function, so maybe this gives some mixup when multithreading?

public class NewJFrame2 extends javax.swing.JFrame {
    public static String value
}

Open in new window



When one of the 10 threads is finished a new one should be started.

Or do I have to restructure the whole thing so it will work?


Thanks
0
netslt
Asked:
netslt
  • 4
  • 3
1 Solution
 
CEHJCommented:
Sounds like you'd be better off with a thread pool with those ten threads running constantly
0
 
netsltAuthor Commented:
OK I now had a quick look at fixed thread pool.

What I don't understand is how  I add new tasks to the pool?

Do I do that from inside my loop?

How to make sure not to add to many tasks to the pool to fast?

What would be the basic structure to achieve the same thing as in my code example above?

Thanks
0
 
CEHJCommented:
Well you wouldn't add new tasks would you? Why not just have n tasks running constantly?
0
Concerto's Cloud Advisory Services

Want to avoid the missteps to gaining all the benefits of the cloud? Learn more about the different assessment options from our Cloud Advisory team.

 
netsltAuthor Commented:
ok so that would mean that each thread starts/contains a indefinite loop that connects to the db & sends the result to myprocess()?
0
 
CEHJCommented:
Yes, that's one way of doing it. That way, you don't have the overhead of thread setup
0
 
netsltAuthor Commented:
ok, thanks. I will try that.
0
 
CEHJCommented:
:)
0

Featured Post

Concerto Cloud for Software Providers & ISVs

Can Concerto Cloud Services help you focus on evolving your application offerings, while delivering the best cloud experience to your customers? From DevOps to revenue models and customer support, the answer is yes!

Learn how Concerto can help you.

  • 4
  • 3
Tackle projects and never again get stuck behind a technical roadblock.
Join Now