Close Menu
    DevStackTipsDevStackTips
    • Home
    • News & Updates
      1. Tech & Work
      2. View All

      ScyllaDB X Cloud’s autoscaling capabilities meet the needs of unpredictable workloads in real time

      June 17, 2025

      Parasoft C/C++test 2025.1, Secure Code Warrior AI Security Rules, and more – Daily News Digest

      June 17, 2025

      What I Wish Someone Told Me When I Was Getting Into ARIA

      June 17, 2025

      SD Times 100

      June 17, 2025

      Clair Obscur: Expedition 33 is a masterpiece, but I totally skipped parts of it (and I won’t apologize)

      June 17, 2025

      This Xbox game emotionally wrecked me in less than four hours… I’m going to go hug my cat now

      June 17, 2025

      Top 5 desktop PC case features that I can’t live without — and neither should you

      June 17, 2025

      ‘No aggressive monetization’ — Nexus Mods’ new ownership responds to worried members

      June 17, 2025
    • Development
      1. Algorithms & Data Structures
      2. Artificial Intelligence
      3. Back-End Development
      4. Databases
      5. Front-End Development
      6. Libraries & Frameworks
      7. Machine Learning
      8. Security
      9. Software Engineering
      10. Tools & IDEs
      11. Web Design
      12. Web Development
      13. Web Security
      14. Programming Languages
        • PHP
        • JavaScript
      Featured

      Build AI Agents That Run Your Day – While You Focus on What Matters

      June 17, 2025
      Recent

      Build AI Agents That Run Your Day – While You Focus on What Matters

      June 17, 2025

      Faster Builds in Meteor 3.3: Modern Build Stack with SWC and Bundler Optimizations

      June 17, 2025

      How to Change Redirect After Login/Register in Laravel Breeze

      June 17, 2025
    • Operating Systems
      1. Windows
      2. Linux
      3. macOS
      Featured

      Clair Obscur: Expedition 33 is a masterpiece, but I totally skipped parts of it (and I won’t apologize)

      June 17, 2025
      Recent

      Clair Obscur: Expedition 33 is a masterpiece, but I totally skipped parts of it (and I won’t apologize)

      June 17, 2025

      This Xbox game emotionally wrecked me in less than four hours… I’m going to go hug my cat now

      June 17, 2025

      Top 5 desktop PC case features that I can’t live without — and neither should you

      June 17, 2025
    • Learning Resources
      • Books
      • Cheatsheets
      • Tutorials & Guides
    Home»News & Updates»CodeSOD: Pulling at the Start of a Thread

    CodeSOD: Pulling at the Start of a Thread

    May 1, 2025

    For testing networking systems, load simulators are useful: send a bunch of realistic looking traffic and see what happens as you increase the amount of sent traffic. These sorts of simulators often rely on being heavily multithreaded, since one computer can, if pushed, generate a lot of network traffic.

    Thus, when Jonas inherited a heavily multithreaded system for simulating load, that wasn’t a surprise. The surprise was that the developer responsible for it didn’t really understand threading in Java. Probably in other languages too, but in this case, Java was what they were using.

            public void startTraffic()
            {
                Configuration.instance.inititiateStatistics();
                Statistics.instance.addStatisticListener(gui);
               
                if (t != null)
                {
                    if (t.isAlive())
                    {
                        t.destroy();
                    }
                }
               
                t = new Thread(this);
                t.start();
            }
    

    Look, this is not a good way to manage threads in Java. I don’t know if I’d call it a WTF, but it’s very much a “baby’s first threading” approach. There are better abstractions around threads that would avoid the need to manage thread instances directly. I certainly don’t love situations where a Runnable also manages its own thread instance.

    This is almost certainly a race condition, but I don’t know if this function is called from multiple threads (but I suspect it might be).

    But what’s more interesting is where this code gets called. You see, starting a thread could trigger an exception, so you need to handle that:

            public void run()
            {
                while (true)
                {
                    try
                    {
                        loaderMain.startTraffic();
                        break;
                    }
                    catch (Exception e)
                    {
                        System.out.println("Exception in main loader thread!");
                        e.printStackTrace();
                    }
                }
            }
    

    Inside of an infinite loop, we try to start traffic. If we succeed, we break out of the loop. If we fail, well, we try and try again and again and again and again and again and again…

    Jonas writes:

    Since I’m the only one that dares to wade through the opaque mess of code that somehow, against all odds, manages to work most of the time, I get to fix it whenever it presents strange behavior.

    I suspect it’s going to present much more strange behavior in the future.

    [Advertisement]
    ProGet’s got you covered with security and access controls on your NuGet feeds. Learn more.

    Source: Read More 

    Facebook Twitter Reddit Email Copy Link
    Previous ArticleFOSS Weekly #25.18: Linux Magazine, Modern Terminals, Muse Pi, apt Guide and More
    Next Article Linux Schools – Ubuntu-based server based distribution

    Related Posts

    News & Updates

    Clair Obscur: Expedition 33 is a masterpiece, but I totally skipped parts of it (and I won’t apologize)

    June 17, 2025
    News & Updates

    This Xbox game emotionally wrecked me in less than four hours… I’m going to go hug my cat now

    June 17, 2025
    Leave A Reply Cancel Reply

    For security, use of Google's reCAPTCHA service is required which is subject to the Google Privacy Policy and Terms of Use.

    Continue Reading

    How to get Apple TV+ for less than $3 a month – even if you already subscribe

    News & Updates

    CVE-2025-46724 – Langroid TableChatAgent Code Injection Vulnerability

    Common Vulnerabilities and Exposures (CVEs)

    New tool evaluates progress in reinforcement learning

    Artificial Intelligence

    Valve responds to alleged Steam “data breach” leak of 89 million account details — here’s the full story

    News & Updates

    Highlights

    CVE-2025-4222 – WordPress Database Toolset Sensitive Information Exposure

    May 3, 2025

    CVE ID : CVE-2025-4222

    Published : May 3, 2025, 3:15 a.m. | 2 hours, 15 minutes ago

    Description : The Database Toolset plugin for WordPress is vulnerable to Sensitive Information Exposure in all versions up to, and including, 1.8.4 via backup files stored in a publicly accessible location. This makes it possible for unauthenticated attackers to extract sensitive data from database backup files. An index file is present, so a brute force attack would need to be successful in order to compromise any data.

    Severity: 5.9 | MEDIUM

    Visit the link for more details, such as CVSS details, affected products, timeline, and more…

    CVE-2025-41444 – Zohocorp ManageEngine ADAudit Plus SQL Injection Vulnerability

    June 9, 2025

    Pixel Watch’s most important update yet is finally rolling out in the US

    April 8, 2025

    This AI Paper from Salesforce Introduces VLM2VEC and MMEB: A Contrastive Framework and Benchmark for Universal Multimodal Embeddings

    April 11, 2025
    © DevStackTips 2025. All rights reserved.
    • Contact
    • Privacy Policy

    Type above and press Enter to search. Press Esc to cancel.