Your videos are really TOP of the TOP. Maybe you could record something about practical applications of using Phaser. I still could not deduce from the video what would be a practical use of Phaser. I understand that it can be used as a substitution for Latch and Barrier but that is most probably not the main purpose. Also, do you have maybe a github source code for your videos?
Very good and simple explanation, great job. I found some problem when I try to run phaser (as CountDownLatch) program , I notice it do not give exact output as CountDownLatch program, but when I change phaser.awaitAdvance(1); to phaser.awaitAdvance(0); then it work exactly as CountDownLatch. Will you Please explain it ? thanks in advance
I just executed the example(phaser acting as a countdownlatch) and tried to verify your explanation.But it seems i got different result.Just wanted to ask have you verified that example ?
Hi Defog, recently I've encountered this following question in one of the interview I faced and I was not able to answer it. Please Make a vide or let me know how it can be achieved. Q. How can you start Multiple threads(ex 10 threads) at the same time(exactly same time) int Java. Thanks in advance
Do you mean, start 10 tasks on 10 different threads at the same time? It purely depends on CPU scheduling which is not under control of Java but of Kernel thus its not possible to do that.
ok, even thats not possible. If we use single thread to start 10 threads, then it will start them sequentially. Even if you have 10 existing threads start 1 thread each it will depend on if those 10 threads work simulatenously on 10 CPU cores. Maybe with CPU Core Affinity we can ensure that. And then have a timer(absolute, not relative) in those threads to start a new thread. Btw, also note that start() of the Thread only puts thread on runnable queue it doesnt instantly schedule it on CPU Sorry to say this, but I suspect the interviewer who asked the question also doesnt know enough about threading
Nice video! Although one critical difference between Latches and Barriers are Barriers are used to wait on Threads i.e number specified on Barrier should be called from that many Threads while Latches are used to wait on events, i.e even the same Thread can call the countDown multiple times.
Thanks Deepak sir, the way you do the visualisation of the thread is amazing, it really helps us to understand in a better way. Thanks a lot for the wonderful tutorial.
If we initialize phaser with 1. And then we register a thread separately - does that mean await advance count is 2 now? And it's deadlock! So, we shud either initialize or register and shud not do both! Hope I am saying right..
I am trying to build a class which constructor takes ListtaskList and this class executes tasks by using ExecutorService and LatchCountDown. Resposibilty of this class to executes task and decrement latch count. After end go back to the client.
absolutely this is the best video for java concurrency,but there are many new terms coming up suddenly, so this one is still pretty hard to me, maybe in the future i will come back and watch again,hope i can get a better understanding
Defog Tech hi mate, I have another question here about the Future and callable interface, say that I submit a task to the thread in the thread pool, then do other operations, and then I call future.get() if the thread finished execution, it will not block the main thread, but it will block the main thread if the thread in the pool doesn’t finish the task yet, so it is blocking the process
9:47 What if the Main Thread reaches _phaser.arriveAndAwaitAdvance()_ before the Child Thread has even started? Isn't _phaser.register()_ supposed to be in the Main Thread and _phaser.arrive()_ in the Child thread?
I liked all the concurrency videos made by you. You explain these complex topics so simply. But it would have been really helpful if you have code along instead of using code snippets. It would help us to understand better
API names are worded differently but they are very similar to Promise API and supported methods like Promise.all() and Promise.allSettled(), if I am not wrong.
1. What happens if latch reaches 0 but still latch.countdown() is called. 2. What happens when out of 3 threads 2 threads reaches barrier and barrier.reset() is performed.
Its nothing special. I love to read and understand complex topics. Reading good sources help (for Java I read Concurrency in Practice book, JEP articles, OpenJDK dev discussions etc.). For system design, the CS papers are typically excellent (Google, Meta, AWS, USENIX, SIGMOD, etc). - mail.openjdk.org/mailman/listinfo - openjdk.org/projects/jdk/17/jeps-since-jdk-11 - jcip.net/
Nice video Deepak.Where should I use CountDownLatch?In most of the cases I use Callable and call get() which is a blocking operation then why I need CountDownLatch to let the main thread as same thing I can achieve using get call..please throw some light on this.
one example of count-down-latch is (before spring days), if you have a class which is waiting for other classes to initialize... (eg: UserService, RateService etc. which may get things from database and take time to initialize)..main class would do count-down-latch.await() and other classes would do count-down-latch.countdown() when they were ready. Here the executor service and callables donot help
I have never come across any situation wherein only CyclicBarrier can be used as I was able to achieve the same thing with CounDownLatch.Can you give any usecase apart from player example wherein CyclicBarrier was best fit?
Hi Manoj...I had an interview question on this.?Check here? stackoverflow.com/questions/54609585/how-to-stop-all-threads-if-anyone-fails-in-java/54609899#54609899
@@nokia1727 We can achieve the same thing with CountDownLatch as well.. create a main thread which will span all other threads and wait for all threads to complete..if all threads have completed (no exception) then commit the transaction in main thread otherwise cancel rest of the threads and rollback the transaction .
Thanks much! appreciate your kindness. I am planning to start (paid) RU-vid memberships on the channel soon with exclusive content. Hopefully with enough support, I can do this full time.