• Post Reply
  • Bookmark Topic Watch Topic
  • New Topic

Main thread is terminated, After threads all threads initialized.

 
Ramakrishna Udupa
Ranch Hand
Posts: 254
  • 0
  • 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: 1089
14
  • 0
  • 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
Pie
Posts: 42966
73
  • 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
  • 0
  • 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
Pie
Posts: 4181
21
IntelliJ IDE Java Python
  • 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.
 
I agree. Here's the link: http://aspose.com/file-tools
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic