Doing several things at the same time - Java threads
If you have a program that you want to do several tasks at the same time, you can use threads (in Java). You create a runnable object through a constructor, start it when you want it to start and stop it when you want it to stop. And it runs in parallel with (in reality time shared with) other threads in the same process.
There's a first example [here]
which extends the Thread classi
. But very often, you'll want to be able to extend another class too, and won't want to use up your valuable single inheritance that's allowed in Java, so instead you can implement runnable
. Example [here]
Sometimes, you'll want threads to run independently of each other but at other times you'll need them to co-operate to share something - for example, a web server such as Tomcat my be independently serving two users, running different programs, at the same time each may need to write a note of what it's done to a common log file. If you just allow the writing to happen without any consideration of other processes that might be writing to the same output file, you'll end up with the outputs getting mixed up within each log record, and the log file will be an unusable mess. There's an example showing that [here]
. However, if you syncronize
each thread to the object, they'll wait for the object to become available and use it one at a time. Example [here]
As each new thread waits for the resource / object to be available to it, heavy syncronisation can result in a significant loss of throughput for your application. You should take care not to hold onto a resource for longer than necessary - if you do, then it will be rather like having you queueing at the traffic lights long after all the pedestrians have crossed and the traffic on the other roads has cleared. (written 2010-11-10)
Associated topics are indexed as below, or enter http://melksh.am/nnnn for individual articlesJ804 - Java - Threads 
Dripping taps, Java threads and the single thread model - (2009-06-01)
Some other Articles
Changing a Servlet - more that just editing and compilingGathering information - logging - with log4j. First steps.Least Common Ancestor - what is it, and a Least Common Ancestor algorithm implemented in PerlJava - basic rules for arithmetic, variables and conversionDoing several things at the same time - Java threadsFresh Paint - Java ArraysSetting up individual variables, and arrays, in Java - some commented examplesLooking back and forward personally - 6 years each waySending out an email containing HTML from within a PHP pageHow to display information from a database within a web page
4672 posts, page by page
Link to page ... 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94 at 50 posts per page
This is a page archived from The Horse's Mouth at
the diary and writings of Graham Ellis.
Every attempt was made to provide current information at the time the
page was written, but things do move forward in our business - new software
releases, price changes, new techniques. Please check back via
our main site for current courses,
prices, versions, etc - any mention of a price in "The Horse's Mouth"
cannot be taken as an offer to supply at that price.
Link to Ezine home page (for reading).
Link to Blogging home page (to add comments).