Win a copy of Murach's Python Programming this week in the Jython/Python forum!
  • Post Reply Bookmark Topic Watch Topic
  • New Topic

Main thread is terminated, After threads all threads initialized.  RSS feed

 
Ramakrishna Udupa
Ranch Hand
Posts: 254
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Hi All,

I'm creating 3 threads for mini Web-crawler. When 3 threads created, main thread is continuing its job and terminated. I want main thread to process some tasks after child's executed(while sleeping). What I mean is,

1) Main thread created 3 threads.(Main thread should sleep, after creating child's)
2) 3 threads are crawled some pages and gone to sleep.
3) Now, I want main thread to wake-up and do some tasks.
4) Again main thread should go to sleep and 3 child's should wake-up.

Here, I don't know how to wake-up main thread, when all child's are sleeping...

Thanks:
Ramakrishna K.C
 
Chan Ag
Rancher
Posts: 1090
14
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
You could use some sort of an inter thread communication mechanism- depends on what you're comfortable with.
 
Ulf Dittmer
Rancher
Posts: 42970
73
  • Likes 1
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
It sounds like a java.util.concurrent.CountDownLatch may fit the bill.
 
Ramakrishna Udupa
Ranch Hand
Posts: 254
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
If I use java.util.concurrent.CountDownLatch, After countdown it'll(Main thread) wake-up without seeing all child threads are sleeping or not. That is the concept of java.util.concurrent.CountDownLatch Correct? Can you give some code samples?


Inter-Thread mechanism communication, Some what doing now. But, it takes a lot of code. I want simple, understandable, Less code.

Thanks:
Ramakrishna K.C
 
Steve Luke
Bartender
Posts: 4181
22
IntelliJ IDE Java Python
  • Likes 1
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Or if this is a cycle where the main thread gathers pages to process and the child threads process them, then you might consider using an Executor / ThreadPool. See this part of the tutorials: http://docs.oracle.com/javase/tutorial/essential/concurrency/executors.html. Basically, you make a ThreadPool with 3 threads. The main thread submits three tasks, uses the Futures to wait for them to complete. Submits the next group of tasks, and repeat until done.
 
It is sorta covered in the JavaRanch Style Guide.
  • Post Reply Bookmark Topic Watch Topic
  • New Topic
Boost this thread!