Meaningless Drivel is fun!*
The moose likes Threads and Synchronization and the fly likes Thread (maintain current thread) Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login


Win a copy of Android Security Essentials Live Lessons this week in the Android forum!
JavaRanch » Java Forums » Java » Threads and Synchronization
Bookmark "Thread (maintain current thread)" Watch "Thread (maintain current thread)" New topic
Author

Thread (maintain current thread)

Caden Whitaker
Greenhorn

Joined: Jan 15, 2009
Posts: 24
This is a pretty basic problem.

I'm working on a piece of middleware between two large applications that cannot be altered. My little function is the squishy bit in the middle

Application #1: A huge computational powerhouse that has an exposed jar with one function that I use (simulated here by the function runAlgorithm)

Application #2: A desktop UI that calls my middleware and expects a result in the same thread.

Here's some sample code


The problem:
So looking at the example code, main() is basically the UI calling my function. I cannot edit main(), I cannot do anything to main. It calls my function and expects a result

Also runAlgorithm() is the massive server behind the scenes. I cannot edit runAlgorithm, I cannot do anything other than expect a result.

Instead of chaining all my runAlgorithm()'s in a row, it is perfectly fine for me to thread them out in my performFunction() call. My question is what would be (given the sparse details above) the best way to proceed? Should I thread out all of my runAlgorithms() and sleep inside performFunction() until they all respond? Is there a better way?

Any help would be appreciated.

Thanks!
Paul Clapham
Bartender

Joined: Oct 14, 2005
Posts: 18541
    
    8

If you want to start ten separate threads to do the ten separate calls to runAlgorithm(), sure, go ahead. But you don't need to do any sleeping while you're waiting for the threads to complete. Just start the threads, then call each of their join() methods.
Ireneusz Kordal
Ranch Hand

Joined: Jun 21, 2008
Posts: 423
Try this code - it uses ThreadPool and Future/Callable interfaces,
with this code you dont need to deal with synchronization of threads - it is done automatically for you,
and you can easy control the number of threads in ThreadPool (sometimes too many simultaneous threads is not a good idea).
Paul Clapham
Bartender

Joined: Oct 14, 2005
Posts: 18541
    
    8

Even better than my quick-and-dirty suggestion. One day I will have to learn about the Java 5 concurrency classes properly.

 
I agree. Here's the link: http://aspose.com/file-tools
 
subject: Thread (maintain current thread)
 
Similar Threads
Standard Deviation
Q: Math.round(Math.random() + 2.50001; ????
Thread lock doubt
Generics - need help
threads + unique random numbers