Jakob Jenkov
Jakob Jenkov
  • Видео 80
  • Просмотров 3 167 664
Designing for Scalability vs Performance
When the load on a system gets close to the capacity of that system - you will typically have to address that situation by increasing the capacity of that system.
You can increase the capacity of a system in two ways: Via scaling - or via performance optimization.
In this video I discuss the different implications for your system and its operational cost depending how you decide to address a capacity issue (via scaling or via performance optimization).
Просмотров: 742

Видео

Java Generics
Просмотров 2,8 тыс.Месяц назад
Java Generics enable us to gain type safety in situations where classes and methods that are designed to be able to work with any type would otherwise be designed to work with Object instances. For instance, without Java Generics the Java List, Java Set, Java Map etc. interfaces would all be working on Object instances. With Java Generics you can create List, Set or Map instances that work on s...
Java ForkJoinPool
Просмотров 4,8 тыс.4 месяца назад
The Java ForkJoinPool helps you break down large tasks into smaller subtasks which can be executed in parallel using all, or some, of the CPU cores available in your computer. The Java ForkJoinPool thus helps you implement a fork and join type of work break down and parallelism. The Java ForkJoinPool implements a work stealing algorithm which further helps utilize the CPU cores in your computer...
P2P Networks Introduction
Просмотров 2,6 тыс.5 месяцев назад
Peer-to-peer networks, AKA P2P networks, are networks of computer communicating without a central server. Peers are different from clients and servers in that clients and servers have different roles, whereas peers typically all have the same roles - each acting as both client of, and server to, other peers in the P2P network. There are multiple P2P network topologies - such as unstructured P2P...
Conscious Software Design
Просмотров 2,2 тыс.7 месяцев назад
Conscious Software Design is my personal software design philsophy which I have adopted over 25 years of professional software development. Many developers with 10 years of software development experience begin to develop differently - and in this video I explain why I believe that is. Software Design - Playlist: ruclips.net/p/PLL8woMHwr36HWMaOTIiWNf_fYYkZCHPxo&feature=shared Junior, Senior and...
Structural Software Design
Просмотров 2,4 тыс.Год назад
Structural software design is about how you structure your software internally. There are three core elements to structural design which I cover in this video. I also give an example of how a simple functional requirement can be implemented using three different designs. Twitter: @jjenkov LinkedIn: www.linkedin.com/in/jakob-jenkov-4a3a8/ Structural Software Design - Text: jenkov.com/tutorials/s...
Software Design Goals
Просмотров 1,6 тыс.Год назад
Software design goals are what we are trying to achieve when we apply common software design techniques in our day-to-day software development work. In this video I cover a set of the most common software design goals, and encourage you to raise your awareness of the connection between the design decisions you make, and the design goals you are trying to achieve via those decisions. Chapters: 0...
Software Design Introduction
Просмотров 6 тыс.Год назад
Great software design makes a big difference in how easy that software is to use, develop, test etc. Yet, software design is hard to do well. One of the challenges is, that I don't believe we always think constructively about software design. We may sometimes just follow a recipe someone else made, rather than do our own design thinking. In this introduction to software design I lay out some of...
Designing for Performance - is Not as Hard as You Think !
Просмотров 1,9 тыс.Год назад
You have probably heard the slogan "Premature Optimization is the Root of All Evil ! " - but over many years of working with performance optimization I have come to believe this is misleading! #shorts #short
The Compound Performance Penalty Problem
Просмотров 1,4 тыс.Год назад
The compound performance penalty problem occurs when performance inefficiencies across multiple layers compound into a total, larger performance penalty. This penalty is often paid by applications that use a lot of inefficient frameworks and libraries. The larger the code base and the more external libraries are used, the larger the probability is of compound performance penalties. Software Per...
Java ExecutorService Using Virtual Threads
Просмотров 9 тыс.Год назад
With the addition of Virtual Threads to Java, a special Java ExecutorService implementation was also added which executes every single task submitted to it using a separate virtual thread. In this video I show how to create and use a Java ExecutorService using virtual threads internally. Twitter: @jjenkov LinkedIn: www.linkedin.com/in/jakob-jenkov-4a3a8/ If you are new to Java Virtual Threads -...
Java Virtual Threads
Просмотров 37 тыс.Год назад
Java Virtual Threads are a new kind of lightweight threads that were added to Java in Java 19. In this video I describe what Java virtual threads are, how virtual threads are different from the existing platform threads, and show you a quick example of how to use virtual threads. Twitter: @jjenkov LinkedIn: www.linkedin.com/in/jakob-jenkov-4a3a8/ Java Virtual Threads - Text version: jenkov.com/...
Thread Signaling in Java
Просмотров 12 тыс.Год назад
Java has a set of thread signaling features that enable one Java thread to coordinate its actions with another. These basic thread signaling features are provided via the Object class wait() , notify() and notifyAll() methods. When implementing thread signaling in Java you need to be aware of the problem of missed signals and spurious wakeups. I cover both in this video too. Chapters: 0:00 Java...
My 9 + 1 Core Software Performance Optimization Principles
Просмотров 6 тыс.2 года назад
When working with software performance optimization, I use these 9 1 core principles as a checklist to make sure I have looked through the performance gain opportunities reasonably thoroughly. The performance difference between an unoptimized and a fully optimized software system can be a factor 10 to 100. Even a factor 1.000 if the right conditions are present. Better performing software means...
Thread Congestion in Java
Просмотров 9 тыс.2 года назад
Thread congestion can occur when two or more threads are trying to access the same, guarded data structure at the same time. By "guarded" I mean that the data structure is guarded using synchronized blocks or a concurrent data structure (Lock, BlockingQueue etc.) so that the data structure is thread safe. The resulting thread congestion means that the threads trying to access the shared data st...
Single-threaded and Same-threaded designs
Просмотров 12 тыс.2 года назад
Single-threaded and Same-threaded designs
Polymorph Smart Media Platform - Introduction
Просмотров 1,8 тыс.2 года назад
Polymorph Smart Media Platform - Introduction
7 + 2 Things I Love About Java
Просмотров 7 тыс.3 года назад
7 2 Things I Love About Java
False Sharing in Java
Просмотров 12 тыс.3 года назад
False Sharing in Java
CPU Cache Coherence + Java Concurrency
Просмотров 18 тыс.3 года назад
CPU Cache Coherence Java Concurrency
Compare and Swap in Java
Просмотров 16 тыс.3 года назад
Compare and Swap in Java
Producer Consumer Pattern - With Java Example
Просмотров 27 тыс.3 года назад
Producer Consumer Pattern - With Java Example
Java BlockingQueue
Просмотров 40 тыс.3 года назад
Java BlockingQueue
Deadlock Prevention in Java
Просмотров 15 тыс.3 года назад
Deadlock Prevention in Java
Deadlock in Java
Просмотров 22 тыс.3 года назад
Deadlock in Java
Java ExecutorService - Part 2
Просмотров 20 тыс.3 года назад
Java ExecutorService - Part 2
Java ExecutorService - Part 1
Просмотров 54 тыс.3 года назад
Java ExecutorService - Part 1
Java Lock
Просмотров 46 тыс.3 года назад
Java Lock
Thread Pools in Java
Просмотров 67 тыс.3 года назад
Thread Pools in Java
Concurrency vs Parallelism
Просмотров 66 тыс.3 года назад
Concurrency vs Parallelism

Комментарии

  • @lawjibran4978
    @lawjibran4978 День назад

    Checking to see if current thread is queued isn't it unnecessary since the thread will be blocked trying to get the lock. At (26 min)

  • @tomkutscher942
    @tomkutscher942 День назад

    Java sucks sometimes really hard!

  • @VentaPlataforma
    @VentaPlataforma День назад

    hey good well explication thanks

  • @hackytech7494
    @hackytech7494 3 дня назад

    Thanks a lot, still very helpful video in 2024 🙏❤

  • @PbPomper
    @PbPomper 5 дней назад

    Incredible explanation. Instant sub!

  • @gopircr
    @gopircr 6 дней назад

    @Jakob, I see that you use notify in your examples for BoundedSemaphore. Is it possible that one consumer can wake up another consumer instead of waking up the producer ? Same goes with producer too. Any reason why notifyall is not used ? I was thinking notifyall wouldnt cause the problem of consumer not waking up another consumer.

  • @Pedro-qh7vg
    @Pedro-qh7vg 7 дней назад

    Hello. I have a big problem with your code javafx in the WebView example. It compiles correctly, but the window stays always blank when I launch the code with java 23, and I don't understand why ! can you help me ?

  • @walala14
    @walala14 8 дней назад

    Man i'm loving it all of your content!! You're giving me the possibility to become a better software engineer. Thanks a lot <3

  • @raj_kundalia
    @raj_kundalia 10 дней назад

    This is the best tutorial ever. Thank you for doing this!

  • @NewHorizon-v9p
    @NewHorizon-v9p 15 дней назад

    Jakob, Thanks for your time, effort and a great way of teaching other's!

    • @JakobJenkov
      @JakobJenkov 14 дней назад

      You are welcome !! 😊😊

  • @farom231
    @farom231 15 дней назад

    Thanks, this is amazing explanation. Do you have an example of using this with the Thread Executor Service? How that is advantageous?

    • @JakobJenkov
      @JakobJenkov 14 дней назад

      I have another video about it in the playlist... 😊

  • @raj_kundalia
    @raj_kundalia 16 дней назад

    This content is gold. After almost 8 years, I keep on knowing things that I did not know before, not just this particular video but the whole series. Thank you, Jacob.

    • @JakobJenkov
      @JakobJenkov 14 дней назад

      You are most welcome !! 😊😊

  • @sebastiantomczyk4577
    @sebastiantomczyk4577 19 дней назад

    Does the textual version include all the informations that RUclips course have(I mean for entire JAVA THREADS, not just for this episode)? I prefer textual version more but I dont want to miss any bit of what YT course gives. Thanks for the answer!

    • @JakobJenkov
      @JakobJenkov 14 дней назад

      Usually the articles and videos have the same amount of details 😊

    • @sebastiantomczyk4577
      @sebastiantomczyk4577 14 дней назад

      @@JakobJenkov thank you 👍🏻

  • @anothermouth7077
    @anothermouth7077 21 день назад

    Dude, i refer to your java portal quite often! Didnt know you have youtube channel. Instant subscribe

    • @JakobJenkov
      @JakobJenkov 20 дней назад

      Thank you! :-) ... I don't have nearly as many videos as I have textual tutorials, and it will probably stay that way, but I keep making videos from time to time :-)

    • @anothermouth7077
      @anothermouth7077 20 дней назад

      @@JakobJenkov understandable. Unless there's some cool trick or technique or gotchas to show , your textual blogs works just fine :)

  • @dhruvankadavala568
    @dhruvankadavala568 22 дня назад

    Best explanation I have ever seen...

    • @JakobJenkov
      @JakobJenkov 20 дней назад

      Thank you very much !! :-)

  • @jefvandewater
    @jefvandewater 23 дня назад

    Dat gelooft toch geen kat.

  • @nadavkopit
    @nadavkopit 24 дня назад

    Thanks a lot! Top notch explanation and examples.

  • @osamaesmael1260
    @osamaesmael1260 27 дней назад

    you're awesome.

  • @jasper5016
    @jasper5016 Месяц назад

    Thanks, Jakob. Very few people really cover this subject. Can you please cover this topic in more detail?

    • @JakobJenkov
      @JakobJenkov Месяц назад

      I have a playlist about performance optimization - but it's not yet so big: ruclips.net/video/ULlFWomaPVw/видео.html

  • @manrique.varela
    @manrique.varela Месяц назад

    Thanks for your videos! 🙏

  • @personalaccount1515
    @personalaccount1515 Месяц назад

    THX!

  • @ganeshkumarvenkatesan
    @ganeshkumarvenkatesan Месяц назад

    Line No: 56 elements.add(new Object()); you forgot mention why it won't work. Even though the Object is super class of Parent. why it gives error?

    • @JakobJenkov
      @JakobJenkov Месяц назад

      Do you have a timestamp?

    • @ganeshkvenkatesan
      @ganeshkvenkatesan Месяц назад

      51:20 you're explaining line No: 55. And thats it the video ended.

  • @flatmapper
    @flatmapper Месяц назад

    So using Rust is for squizing max from hardware. e.g. when other blockchains scale out, Solana keeps running on a single node on Rust

    • @JakobJenkov
      @JakobJenkov Месяц назад

      Rust, D, C, C++ etc. all give good performance, but your internal design is important too. You can also get decent performance out of Java and C#

  • @flatmapper
    @flatmapper Месяц назад

    System design topic?

    • @JakobJenkov
      @JakobJenkov Месяц назад

      Yes, I have a playlist about Software Design too 😊 ... building it slowly. Next video in that list will be more detailed, and more concrete / applicable 😊

  • @rishiraj2548
    @rishiraj2548 Месяц назад

    Thanks

  • @virrao1334
    @virrao1334 Месяц назад

    wow

  • @loyyeeko1231
    @loyyeeko1231 Месяц назад

    top 3 java youtuber, always the best

  • @kimo8154
    @kimo8154 Месяц назад

    thanks jakob. verry good as always. one last thing maybe can be added here is to generic types can extends many other type in the same time (i found that the sysntax is verry wierd in the begining ''&") example: class MyClass<T extends Number & Comparable>

    • @JakobJenkov
      @JakobJenkov Месяц назад

      True, there are even more advanced possibilities... though I don't see them used much.

  • @aayushmanmishra1425
    @aayushmanmishra1425 Месяц назад

    You explain so well. I have been your follower since college, and now I am a software engineer. Great work, really appreciate 😊

    • @JakobJenkov
      @JakobJenkov Месяц назад

      Thank you very much for your kind words :-) I am happy that I have been able to help you! :-)

  • @jhonsen9842
    @jhonsen9842 Месяц назад

    One Like and One Comments For my Brother . Thanks

  • @LaxmanNarkhede-hx6rs
    @LaxmanNarkhede-hx6rs Месяц назад

    i dont get the part where u said volatile keyword makes the variable directly read or written from the memoty, and also makes the non volatile variable to be fetched from the main memory..is it like that

    • @JakobJenkov
      @JakobJenkov Месяц назад

      That is explained in more detail in other videos too. For instance, in my video about the Java Memory Model, the Java Happens Before Guarantee and Java Synchronized.

  • @YogaNarasimhaEpuri
    @YogaNarasimhaEpuri Месяц назад

    4000 like is by me. 😁😁

  • @tarunsingh7608
    @tarunsingh7608 Месяц назад

    The MOST Detailed Videos on Multi-threading & Concurrency in JAVA by PROFESSOR Synchronized, a.k.a, @JakobJenkov. These videos SYNC ur Brains on the Most recent concepts of Java threads as of Java 19 😃😃

    • @JakobJenkov
      @JakobJenkov Месяц назад

      Thank you very much for your kind and enthusiastic words 😊😊

  • @Caro-dh9ql
    @Caro-dh9ql Месяц назад

    Welcome back sir !

  • @subinos
    @subinos Месяц назад

    Thank you so much for creating such wonderful video. Explained very well, thorough and detailed God Level !!!. Best video series I have ever watched on multithreading topic

    • @JakobJenkov
      @JakobJenkov Месяц назад

      Thank you very much! :-) ... I am happy the video series is helpful! :-)

  • @dekc_truje
    @dekc_truje Месяц назад

    Welcome back! Always great content from you

  • @the_cute_parrot
    @the_cute_parrot Месяц назад

    Great video Jabkob! This parrot wants to learn more. Looking forward to more interesting java videos. (⁠^⁠^⁠)

  • @tulipverma5647
    @tulipverma5647 Месяц назад

    if possible please refresh multithreading videos. Great to see you back👍

    • @JakobJenkov
      @JakobJenkov Месяц назад

      Thanks! ... most of the Java Concurrency topics are still quite "up-to-date" - meaning the topics they cover have not changed that much. New features have been added though, such as Structured Concurrency. I will try to cover them in the future. :-)

  • @tiagojosedasilvavieira7072
    @tiagojosedasilvavieira7072 Месяц назад

    The ultimate boss is back

  • @manojrajput6481
    @manojrajput6481 Месяц назад

    Thanks Jakob, explaination is simple and crisp.

    • @JakobJenkov
      @JakobJenkov Месяц назад

      Thank you ! :-) ... Glad it's understandable! :-) Java Generics can be a bit tricky to explain!

  • @freebusdoctor
    @freebusdoctor Месяц назад

    Thanks sir

  • @rishiraj2548
    @rishiraj2548 Месяц назад

    Gratitude!🙂🙏🏻

  • @personalaccount1515
    @personalaccount1515 Месяц назад

    PLS continue with the "conscious design" series!

    • @JakobJenkov
      @JakobJenkov Месяц назад

      I will ! ... next topic in that series is about Compositional Software Design. I am still working on the textual version of that tutorial (to make sure the ideas are coherent). Once that is reasonably ready, I will begin the video version :-)

  • @personalaccount1515
    @personalaccount1515 Месяц назад

    Greeting dude!

  • @personalaccount1515
    @personalaccount1515 Месяц назад

    First