Тёмный
Jakob Jenkov
Jakob Jenkov
Jakob Jenkov
Подписаться
Hi, I make videos about software development related topics like Java, web development etc. Occassionally I'll drop a video or two about career related issues too. Oh, I also run the tutorial website tutorials.jenkov.com .

I try to cover each topic in reasonable depth. My own experience has been, that the deeper my understanding of topics within software development is - the better and faster a developer I become.

I started programming around 1987 (around age 12) on the C128 - in C128 Basic - then on the Amiga 500 in AMOS and Assembler, then later PC and C. I started working with software as job from 1998 as web dev, and from 1999 as Java + web dev, so I've been in the game a long time :-)

From around 2000 and forward I have mostly been working as a freelance, onsite consultant with Java, web and distributed systems deelopment. I love being self employed - but it's a lot of work.
P2P Networks Introduction
52:36
2 месяца назад
Conscious Software Design
26:36
5 месяцев назад
Structural Software Design
10:10
10 месяцев назад
Software Design Goals
4:24
11 месяцев назад
Software Design Introduction
10:28
11 месяцев назад
Java Virtual Threads
9:06
Год назад
Thread Signaling in Java
23:26
Год назад
Thread Congestion in Java
17:24
2 года назад
7 + 2 Things I Love About Java
8:55
2 года назад
False Sharing in Java
17:33
2 года назад
Compare and Swap in Java
24:21
3 года назад
Java BlockingQueue
17:48
3 года назад
Deadlock Prevention in Java
17:49
3 года назад
Deadlock in Java
17:48
3 года назад
Java ExecutorService - Part 2
21:32
3 года назад
Java ExecutorService - Part 1
20:55
3 года назад
Java Lock
28:51
3 года назад
Thread Pools in Java
18:04
3 года назад
Concurrency vs Parallelism
9:29
3 года назад
Race Conditions in Java Multithreading
22:39
3 года назад
Veteran, Senior and Junior Developers
11:08
3 года назад
Комментарии
@sachdevasahil7
@sachdevasahil7 10 часов назад
very well done. best video to recall everything. !! thank you🙏🙏
@JakobJenkov
@JakobJenkov 2 часа назад
Thank you !! 😊
@zeinabrahmani-tn8rq
@zeinabrahmani-tn8rq 4 дня назад
I've watched all of your videos on Concurrency and Multithreading, and they were incredibly informative. Thank you!
@JakobJenkov
@JakobJenkov 2 часа назад
Thank you very much !! I am happy you found them useful ! 😊
@sengao7062
@sengao7062 4 дня назад
Lengend Jakob thanks for your explaination on java topics with deep insight
@avs6362
@avs6362 5 дней назад
Best videos I've seen. I'm wondering why so low views !?
@JakobJenkov
@JakobJenkov 2 часа назад
Thank you !! You will have to ask RU-vid about the views... who knows how the RU-vid algorithms actually work... 🤷‍♂️
@filiptrajkovski1721
@filiptrajkovski1721 6 дней назад
So you are saying that public void set(Values v) { synchronized (this) { this.a = v.a; this.b = v.b; this.c = v.c; } } nothing will be moved to be after ending of synchronised, but what about the following public void set(Values v) { this.c = v.c; synchronized (this) { this.a = v.a; this.b = v.b; } } What if this happens? This can be a potential issue
@JakobJenkov
@JakobJenkov Час назад
I don't think anything before the end of a synchronized block can be moved to after the end of a synchronized block. But, it's better to be safe than sorry, so move it inside the block if you are uncertain.
@Shivam-wk6sq
@Shivam-wk6sq 9 дней назад
One of the best tutorials out there.. This is literally a goldmine.. Thanks a lot
@JakobJenkov
@JakobJenkov 2 часа назад
Thank you very much !! 😊
@cclementson1986
@cclementson1986 10 дней назад
You tried so hard to be clear but you failed and even in the comments you are sticking to it. People are asking, do you mean CPU or CPU core. It matters!!! Stop saying it doesn't. The average person does NOT have a multi CPU machine. So it matters. By not CLEARLY defining what you mean, it causes more confusion, especially to those trying to learn the VERY difficult concept. Say what you mean, say CPU Core. It means something.
@JakobJenkov
@JakobJenkov 2 часа назад
Allright - I will say CPU core in the future... I don't personally think it makes a big difference, except a bit about the internal design with caches etc. But I can refer to the cores as "cores" ... We are also getting a GPU API in Java in the future, and I guess we also just call it "one GPU with many cores".
@cclementson1986
@cclementson1986 2 часа назад
@@JakobJenkov I appreciate your response. I really liked your video but I did have to look at a couple more to fully understand that you meant CPU core. Thank you for taking the time and being willing to adapt. As a consumer of content, I can only appreciate those who are willing to accept feedback and adapt. Thank you for your response.
@ricardoarrobo9528
@ricardoarrobo9528 10 дней назад
I really liked the graphics on this, as a visual learner it makes it easier to follow.
@JakobJenkov
@JakobJenkov 2 часа назад
Great !! 😊
@andd3dfx
@andd3dfx 10 дней назад
Looks helpful, thanks!
@JakobJenkov
@JakobJenkov 2 часа назад
You are welcome 😊
@shankar7435
@shankar7435 11 дней назад
For a moment I thought ThreadPool was a Java standard class and wondered how I could miss this? Thank God. It's a custom one made by the author. No need to remember that. This should have been made it clear in the beginning.
@papatenterick8441
@papatenterick8441 13 дней назад
This playlist as well as whole channel is one of those treasures of youtube
@hamsterhaunter5718
@hamsterhaunter5718 11 дней назад
agreed
@JakobJenkov
@JakobJenkov 2 часа назад
Thanks a lot !! 😊
@shankar7435
@shankar7435 13 дней назад
First time i ever felt someone giving correct portion of details for a concept in java using reasonable and correct language usage. ❤❤❤
@JakobJenkov
@JakobJenkov 2 часа назад
Thank you !! 😊
@shankar7435
@shankar7435 13 дней назад
Feeling lucky to fond your videos. Thanks a lot.
@JakobJenkov
@JakobJenkov 2 часа назад
Happy to hear that 😊
@arisdideambemou1508
@arisdideambemou1508 13 дней назад
Thanks for your video. It was amazing a bring a lot a knowledge !
@JakobJenkov
@JakobJenkov 2 часа назад
Thanks!! Glad you liked it !! 😊
@IgorDomshchikov
@IgorDomshchikov 14 дней назад
@JakobJenkov, thanks for the set of videos. Can you please provide more details about why the PoolThreadRunnable.doStop() and PoolThreadRunnable.isStopped() are synchronized? I am not sure I understand the purpose of this, as both are called from the synchronized methods of the ThreadPool instance.
@JakobJenkov
@JakobJenkov Час назад
That is to ensure thread visibility of the member variables set by these methods, for the threads running the Runnable instances.
@mykyta1235
@mykyta1235 16 дней назад
lol what a God-level tutorials on such a non-trivial topic....
@JakobJenkov
@JakobJenkov 15 дней назад
Was that a compliment? ... or a critique ?! :-D
@mykyta1235
@mykyta1235 15 дней назад
@@JakobJenkov haha that's why I love irl communication instead of this... Anyways, that was definitely a compliment, Sir. You are just awesome.
@imr_07
@imr_07 23 дня назад
First, thanks for all the in depth tutorials. When I'm submitting i < 100 tasks, why am not seeing 100 logged messages?
@JakobJenkov
@JakobJenkov 22 дня назад
Does your code wait for the tasks to complete before exiting ?
@imr_07
@imr_07 22 дня назад
@@JakobJenkov Yes, I call threadPool.waitUntilAllTaskFinished(); public synchronized void waitUntilAllTaskFinished() { while (!queue.isEmpty()) { try { Thread.sleep(10); } catch (InterruptedException ex) { ex.printStackTrace(); } } } It's only working correctly when I'm giving queue capacity == no. of tasks.
@imr_07
@imr_07 22 дня назад
Issue is with this.queue.offer(task); inside execute() method. We need to wait before there is some space in the queue for adding more items. or using overloaded this.queue.offer(task, 100, TimeUnit.SECONDS); let me know if you think there is some other issue.
@fushipunk
@fushipunk 23 дня назад
Thank you very much!, you explain very well. subscribed!
@JakobJenkov
@JakobJenkov 22 дня назад
You are welcome - and thank you! :-)
@Z3rgatul
@Z3rgatul 24 дня назад
So what's the difference between virtual thread and executing something on ForkJoinPool? Looks like useless concept to me
@viranchpatel5071
@viranchpatel5071 24 дня назад
This Multithreading playlist is something invaluable! Hats off to you Jakob :)
@JakobJenkov
@JakobJenkov 22 дня назад
Thank you very much! I am happy it's useful to you ! :-)
@samahdaou14
@samahdaou14 28 дней назад
I'm really impressed with that great explanation and the way you simplify things with the graphs and code samples! Thank you for putting all that effort! BTW IF You Didn't Have a Profile Picture I Would Have thought This is LORD BEALISH speaking😂
@JakobJenkov
@JakobJenkov 27 дней назад
:-D ... Lord Baelish :-D ... well, not quite ;-) ... more like Ragnar Lodbrok ;-) :-D (... as I am Danish too ;-) ). Thank you for your kind words about the video! :-)
@jovangrgur3266
@jovangrgur3266 28 дней назад
Great tutorial about multithreading and Java memory model, but one thing is missing. Diagrams are too static, when you explain different variants of code you should follow that and draw on diagram what is happening, because it will be more clearer. For example in section with local variables and object locations, for different combinations in code you are always using same diagram, so it is very confusing to realize what and which objects are created. This is just feedback from my side how to improve you tutorials
@JakobJenkov
@JakobJenkov 27 дней назад
Thanks for the feedback ! I will try to think about that in future videos! :-) It's not always so easy to draw clearly the ideas I am trying to convey :-) But I will try to think more about it!
@rshmvarma
@rshmvarma 28 дней назад
Coming here after finishing the concurrency playlist because of your excellent content. Your content is criminally underrated. Should have more likes and views. Nevertheless, thank you for investing your time into this.
@JakobJenkov
@JakobJenkov 27 дней назад
Thank you very much for your kind words! :-) I try to focus on being happy about the views they do get - and the people that find something useful in my videos :-) What "could have been" is imaginative. What "is" - is what I focus on :-)
@SyedGm
@SyedGm 29 дней назад
@Jakob, do you have git repository for all these tutorials of threads ? the examples which you are explaining in the videos.
@JakobJenkov
@JakobJenkov 27 дней назад
I have some examples in my Java Examples GitHub repo (link below) - but not yet so many: github.com/jjenkov/java-examples
@ManishKumar-qx1kh
@ManishKumar-qx1kh Месяц назад
Hi Jakob, great content as usual but i am adding a small suggestion that you should've explained about other implementations of Lock interface and how many locks are there in java etc.
@JakobJenkov
@JakobJenkov 22 дня назад
You can look that information up in the JavaDoc :-)
@timcsq
@timcsq Месяц назад
20:09 Spurious wake-ups are not because of any bug, but because of the underlying OS synchronization system (futex-es on Linux OSes, for example). Wikipedia has an article on "Spurious Wakeup" for anyone interested in this problem.
@shubhamagarwal1434
@shubhamagarwal1434 Месяц назад
God of Concurency..i have bene flowing you since my 2014 when you used to write blog post only...by going through your post i attend interview like a LION when they ask mutithreading qns...Thanks a Lot form 10+ yrs exp guy from BLR,India.
@JakobJenkov
@JakobJenkov Месяц назад
Thanks a lot ! :-)
@shubhamagarwal1434
@shubhamagarwal1434 Месяц назад
God of Concurency..i have bene flowing you since my 2014 when you used to write blog post only...by going through your post i attend interview like a LION when they ask mutithreading qns...Thanks a Lot form 10+ yrs exp guy from BLR,India.
@JakobJenkov
@JakobJenkov Месяц назад
Thanks :-)
@shubhamagarwal1434
@shubhamagarwal1434 Месяц назад
God of Concurency..i have bene flowing you since my 2014 when you used to write blog post only...by going through your post i attend interview like a LION when they ask mutithreading qns.........Thanks a Lot form 10+ yrs exp guy from BLR,India.
@JakobJenkov
@JakobJenkov Месяц назад
Thanks :-)
@JakobJenkov
@JakobJenkov Месяц назад
Thanks :-)
@shubhamagarwal1434
@shubhamagarwal1434 Месяц назад
God of Concurency..i have bene flowing you since my 2014 when you used to write blog post only...by going through your post i attend interview like a LION when they ask mutithreading qns.......Thanks a Lot form 10+ yrs exp guy from BLR,India.
@JakobJenkov
@JakobJenkov Месяц назад
Thanks :-)
@shubhamagarwal1434
@shubhamagarwal1434 Месяц назад
God of Concurency..i have bene flowing you since my 2014 when you used to write blog post only...by going through your post i attend interview like a LION when they ask mutithreading qns.....Thanks a Lot form 10+ yrs exp guy from BLR,India.
@JakobJenkov
@JakobJenkov Месяц назад
Thanks :-)
@shubhamagarwal1434
@shubhamagarwal1434 Месяц назад
God of Concurency..i have bene flowing you since my 2014 when you used to write blog post only...by going through your post i attend interview like a LION when they ask mutithreading qns.....Thanks a Lot form 10+ yrs exp guy from BLR,India.
@JakobJenkov
@JakobJenkov Месяц назад
Thanks :-)
@shubhamagarwal1434
@shubhamagarwal1434 Месяц назад
God of Concurency..i have bene flowing you since my 2014 when you used to write blog post only...by going through your post i attend interview like a LION when they ask mutithreading qns.......Thanks a Lot form 10+ yrs exp guy from BLR,India.
@JakobJenkov
@JakobJenkov Месяц назад
Thanks :-)
@shubhamagarwal1434
@shubhamagarwal1434 Месяц назад
God of Concurency..i have bene flowing you since my 2014 when you used to write blog post only...by going through your post i attend interview like a LION when they ask mutithreading qns.......Thanks a Lot form 10+ yrs exp guy from BLR,India.
@JakobJenkov
@JakobJenkov Месяц назад
Thanks :-)
@shubhamagarwal1434
@shubhamagarwal1434 Месяц назад
God of Concurency..i have bene flowing you since my 2014 when you used to write blog post only...by going through your post i attend interview like a LION when they ask mutithreading qns.......Thanks a Lot form 10+ yrs exp guy from BLR,India.
@JakobJenkov
@JakobJenkov Месяц назад
Thank you for your kind words ! :-)
@shubhamagarwal1434
@shubhamagarwal1434 Месяц назад
God of Concurency..i have bene flowing you since my 2014 when you used to write blog post only...by going through your post i attend interview like a LION when they ask mutithreading qns...Thanks a Lot form 10+ yrs exp guy from BLR,India.
@JakobJenkov
@JakobJenkov Месяц назад
You are welcome! :-)
@shubhamagarwal1434
@shubhamagarwal1434 Месяц назад
God of Concurency..i have bene flowing you since my 2014 when you used to write blog post only...by going through your post i attend interview like a LION when they ask mutithreading qns....Thanks a Lot form 10+ yrs exp guy from BLR,India.
@JakobJenkov
@JakobJenkov Месяц назад
Thanks! :-)
@shubhamagarwal1434
@shubhamagarwal1434 Месяц назад
God of Concurency..i have bene flowing you since my 2014 when you used to write blog post only...by going through your post i attend interview like a LION when they ask mutithreading qns..Thanks a Lot form 10+ yrs exp guy from BLR,India..
@JakobJenkov
@JakobJenkov Месяц назад
I am happy that my tutorials were helpful to you over the years!! :-)
@shubhamagarwal1434
@shubhamagarwal1434 Месяц назад
God of Concurency..i have bene flowing you since my 2014 when you used to write blog post only...by going through your post i attend interview like a LION when they ask mutithreading qns..Thanks a Lot form 10+ yrs exp guy from BLR,India.
@JakobJenkov
@JakobJenkov Месяц назад
You are welcome !! ... I am happy that my tutorials were helpful to you over the years!! :-)
@ManishKumar-qx1kh
@ManishKumar-qx1kh Месяц назад
Hi Jacob, Great explanation really appreciate and you just got a sub 🙂 Below are two points i need to ask:- 1) The main method itself runs in a thread so the threads defined are its local variables right? 2) You said object references are stored on stack and objects on heap but what if variable is a primitive type that is they are not objects.
@JakobJenkov
@JakobJenkov Месяц назад
Yes, the local variables in main() are local to the thread running main() Primitives don't have object references to them. The primitive values are store on the stack directly.
@kaimingyang4140
@kaimingyang4140 Месяц назад
My understanding is: Java threads are all user-level, and there is no need to trap to OS level for context switching. But what you said about Synchronized relies on JVM or OS to keep synchronization. I don’t quite understand the part about (implementation of) Synchronized. Can you recommend some reading materials or make a series of videos to explain JVM in depth?
@JakobJenkov
@JakobJenkov Месяц назад
As far as I know, the threads in Java are OS threads. It is the new Virtual Threads that are user level.
@kaimingyang4140
@kaimingyang4140 Месяц назад
@@JakobJenkov thx for your reply, your videos are really really really good~~
@waqasahmed8660
@waqasahmed8660 Месяц назад
Thank you for this amazing tutorial that explains a lot of important concepts related to Threading in Java. Much appreciated.
@JakobJenkov
@JakobJenkov Месяц назад
You are welcome !! 😊 Happy it was helpful to you !! 😊
@lnursalim
@lnursalim Месяц назад
Jakob you deserve more exposure and subscriber. Your materials and lectures are very organized and structured!!! You taught way better than UC professor!
@JakobJenkov
@JakobJenkov Месяц назад
Thank you very much !! 😊 More exposure would be nice... but I don't know how to increase it more than now, except make more videos 😊
@switchlyrics.
@switchlyrics. Месяц назад
So awesome man it help
@JakobJenkov
@JakobJenkov Месяц назад
Great !! Thanks !! 😊😊
@boltez6507
@boltez6507 Месяц назад
Thanks,best intro video i have found so far,and is more exhaustive than most sources. And the overall format of you video is so good,thanks.
@JakobJenkov
@JakobJenkov Месяц назад
Than you very much !! 😊😊😊
@markomilinkovic179
@markomilinkovic179 Месяц назад
AWESOME VIDEO!
@JakobJenkov
@JakobJenkov Месяц назад
Thank you ! 😊😊
@markomilinkovic179
@markomilinkovic179 Месяц назад
SO GOOD!
@JakobJenkov
@JakobJenkov Месяц назад
Thanks 😁
@adhiprasetyo4052
@adhiprasetyo4052 Месяц назад
should I learn operating system before learning java thread ?
@JakobJenkov
@JakobJenkov Месяц назад
No, that should not be necessary :-)
@eq716
@eq716 Месяц назад
You're making so much for the java community. Thank you so much!
@JakobJenkov
@JakobJenkov Месяц назад
You are welcome !! :-) ... It's good to be able to help out! :-)