File APIs for Java Developers
Manipulate DOC, XLS, PPT, PDF and many others from your application.
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
JavaRanch » Java Forums » Java » Threads and Synchronization
Bookmark "Thread (maintain current thread)" Watch "Thread (maintain current thread)" New topic

Thread (maintain current thread)

Caden Whitaker

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.

Paul Clapham

Joined: Oct 14, 2005
Posts: 19973

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

Joined: Oct 14, 2005
Posts: 19973

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:
subject: Thread (maintain current thread)
jQuery in Action, 3rd edition