https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_b964594d3d957944241961017b9eb19bf02834de44cce93d8e67dd306852dbe346167181e455e33d5268ea01d973d77bb056848546f31794f31a4c31a9da5aa3.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_23f1ae74c634d7e5e0a067c22b7a8c2d79c3ffd9a3b9395fc82c1b3b99635552b994f1f72f532f28ceaff1ea054ea026cd488cd62fa03a4ad91d212b5f3c5a72.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_451c3884f51125f7687e5bb07cfab033c04cb7174c33f93213b2af4bad2af13cf48b92a7fa95fc86d7d436f355938a3ac50aa119cdb7c9b6d5a52815c3e6033e.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_bfff9e63e857e9ee612e292d4a6edf3ced64d6a756925c953a9d8f77845ff601eca64d73dfa48756b1a9f4a4d6de6127a273bcde16ddeb71a22383460f4e94b0.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_f4dd7e1d73ae5eda35ed5ad6aa965b612dbf483ece3ca50c1e8e30ad8dff1c66a160ed75e958e2db399661d229874783e0834ad813a479437035666b8e9e3386.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_4fce0769137d4cd096989b0349bc3c2bbfca79ac311fdf714c41ab24d87551c7b49b756c8a8de090b0714a0ad0560e49fa532ba5a88875ea4afd78efac464df6.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_85cec8b07d60426b11040e471babca0d2f9c8dc87a9b56e06cad39828f7f67179e29609100f282a574872c9a93fb635b25416300eb4c97bc5a653d00cf6f8dbf.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_6768e5a27d4d357347338621c0d20bd269b126d30eec796193390f2f530fbaea60af84130c46f9786114be65149e661e87d55c339219c90aa76396d7e5b734ef.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_2acd6bdff3b680341e8c727da5169a647123eb8fd0a90253161b4c3af272c15d293bf9bb217008bb13f84d1910b0e166798001f8603b6c026d5c20a76c41d47c.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_42c37db68afae00c6b114757e8c79332e20878dd16174a0cc5a67de4434f70d606247b5dce5d14ae6036a29c1e04a30c6e58ce91b9f9b57b969e6ffe860d9028.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_268c9bba6ba649318f0da28c37b09a9bbfa371210f9b6b52faa7fd8ae94abf6b3c3bfeb5df5705c93495ce1152ca58aeabc435d6c6c1bd959025165c3f50e086.js
  • Skip to main content
  • Skip to primary sidebar
  • Skip to footer
  • Home
  • Featured
    • Advanced Python Topics
    • AWS Learning Roadmap
    • JWT Complete Guide
    • Git CheatSheet
  • Explore
    • Programming
    • Development
      • microservices
      • Front End
    • Database
    • DevOps
    • Productivity
    • Tutorial Series
      • C# LinQ Tutorials
      • PHP Tutorials
  • Dev Tools
    • JSON Formatter
    • Diff Checker
    • JWT Decoder
    • JWT Generator
    • Base64 Converter
    • Data Format Converter
    • QR Code Generator
    • Javascript Minifier
    • CSS Minifier
    • Text Analyzer
  • About
  • Contact
CodeSamplez.com

CodeSamplez.com

Programming And Development Resources

You are here: Home / Programming / Java Concurrency Basics: Threads, Executors, and Thread Pools

Java Concurrency Basics: Threads, Executors, and Thread Pools

Updated September 9, 2025 by Rana Ahsan Leave a Comment ⏰ 12 minutes

Java Concurrency Basics

Ever noticed how a web server handles many users at once without breaking a sweat? That’s thanks to concurrency. In Java, concurrency means multiple threads working in parallel so programs remain fast and responsive. In this guide, we will explore Java concurrency basics in a comprehensive manner so that you can understand and apply them in your real-world project efficiently and effectively.

What is Concurrency in Java?

Concurrency in Java is the ability to run multiple threads simultaneously within a program, like having multiple chefs in a kitchen handling different orders at the same time. Each thread operates independently, yet they all share the same kitchen resources – your CPU and memory.

Here’s the beautiful part: even with just one CPU core, Java creates the illusion of parallel execution by rapidly switching between threads. It’s like a master chef who can flip pancakes, stir soup, and plate desserts in what seems like the same instant.

But here’s what most tutorials won’t tell you upfront – concurrency isn’t just about speed. It’s about building applications that stay responsive under pressure, utilize modern multi-core processors effectively, and handle multiple tasks without breaking a sweat.

Concurrency vs Parallelism: The Critical Difference

This confusion trips up even experienced developers, so let me clear it up once and for all.

Concurrency is about dealing with multiple tasks at once – managing them, coordinating them, making progress on all of them. Think of it as juggling: you’re not throwing all balls simultaneously, but you’re managing multiple balls in the air.

Parallelism is about actually doing multiple things at the exact same time. This requires multiple CPU cores – like having multiple jugglers each handling their own set of balls.

In Java, you write concurrent code, and the JVM decides whether to run it in parallel based on available hardware. Smart, right?

Java Concurrency Basics: Threads

Let me share something that took me years to truly understand: threads are not just about performance – they’re about designing better programs.

Creating Threads: The Right Way

There are multiple ways to create threads in Java, but I’ll show you the approaches that actually matter in professional development:

// Method 1: Implementing Runnable (Recommended)
public class TaskRunner implements Runnable {
    private final String taskName;
    
    public TaskRunner(String taskName) {
        this.taskName = taskName;
    }
    
    @Override
    public void run() {
        System.out.println("Executing task: " + taskName + 
                          " on thread: " + Thread.currentThread().getName());
        // Your actual task logic goes here
    }
}

// Creating and starting the thread
Thread worker = new Thread(new TaskRunner("Database Backup"));
worker.start();

// Method 2: Using Lambda Expressions (Modern Java)
Thread modernWorker = new Thread(() -> {
    System.out.println("Modern thread execution on: " + 
                      Thread.currentThread().getName());
    // Task logic here
});
modernWorker.start();
Java

Why I recommend Runnable over extending Thread?

Implementing Runnable gives you flexibility. Your class can still extend another class if needed, and you’re following the composition-over-inheritance principle that makes code maintainable.

Thread Lifecycle and States

Understanding thread states isn’t academic fluff – it’s practical knowledge that will save you debugging hours:

  • NEW: Thread created but not started
  • RUNNABLE: Thread is executing or ready to execute
  • BLOCKED: Thread is blocked, waiting for a monitor lock
  • WAITING: Thread is waiting indefinitely for another thread
  • TIMED_WAITING: Thread is waiting for a specified period
  • TERMINATED: Thread has completed execution
Thread thread = new Thread(() -> {
    try {
        Thread.sleep(1000); // TIMED_WAITING state
    } catch (InterruptedException e) {
        Thread.currentThread().interrupt();
    }
});

System.out.println("Before start: " + thread.getState()); // NEW
thread.start();
System.out.println("After start: " + thread.getState()); // RUNNABLE
Java

Using Executors and Thread Pools: The Professional Approach

Here’s where most developers level up their concurrency game. Raw thread creation is like manually managing memory in C – possible, but why would you when better tools exist?

Java ThreadPool And Task Queue

Why Use Thread Pools?

Creating threads is expensive. Each thread consumes memory (typically 1MB for the stack), and constant thread creation/destruction kills performance. Thread pools solve this by reusing threads for multiple tasks.

Think of thread pools as hiring a permanent kitchen staff instead of hiring and firing chefs for every order. Much more efficient, right?

Simple ThreadPool Example

import java.util.concurrent.*;
import java.util.List;
import java.util.ArrayList;

public class ThreadPoolDemo {
    public static void main(String[] args) {
        // Create a fixed-size thread pool
        ExecutorService executor = Executors.newFixedThreadPool(4);
        
        // Submit multiple tasks
        List<Future<String>> futures = new ArrayList<>();
        
        for (int i = 1; i <= 10; i++) {
            final int taskId = i;
            Future<String> future = executor.submit(() -> {
                // Simulate some work
                Thread.sleep(1000);
                return "Task " + taskId + " completed by " + 
                       Thread.currentThread().getName();
            });
            futures.add(future);
        }
        
        // Collect results
        for (Future<String> future : futures) {
            try {
                System.out.println(future.get());
            } catch (InterruptedException | ExecutionException e) {
                e.printStackTrace();
            }
        }
        
        // Always shut down the executor
        executor.shutdown();
    }
}
Java

Types of Thread Pools: Choose Your Weapon

// Fixed Thread Pool - Best for CPU-bound tasks
ExecutorService fixedPool = Executors.newFixedThreadPool(4);

// Cached Thread Pool - Great for many short-lived tasks
ExecutorService cachedPool = Executors.newCachedThreadPool();

// Single Thread Executor - When order matters
ExecutorService singleThread = Executors.newSingleThreadExecutor();

// Scheduled Thread Pool - For recurring tasks
ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(2);
scheduler.scheduleAtFixedRate(() -> {
    System.out.println("Periodic task executed");
}, 0, 5, TimeUnit.SECONDS);
Java

Common Concurrency Issues: The Gotchas That Bite

Your knowledge on Java concurrency basics aren’t complete unless you are aware of the common issues and gotchas. Let me share some common mistakes so you can avoid them.

Race Conditions & Synchronization

Race conditions happen when multiple threads access shared data simultaneously, and the outcome depends on timing. It’s like two people trying to edit the same document simultaneously – chaos ensues.

public class CounterExample {
    private int count = 0;
    
    // WRONG: Not thread-safe
    public void incrementUnsafe() {
        count++; // This is actually three operations: read, increment, write
    }
    
    // RIGHT: Thread-safe with synchronization
    public synchronized void incrementSafe() {
        count++;
    }
    
    // BETTER: Using atomic classes for simple operations
    private AtomicInteger atomicCount = new AtomicInteger(0);
    
    public void incrementAtomic() {
        atomicCount.incrementAndGet();
    }
}
Java

Deadlock: The Threading Nightmare

Deadlocks occur when two or more threads wait for each other indefinitely. Here’s how to prevent them:

public class DeadlockPrevention {
    private static final Object lock1 = new Object();
    private static final Object lock2 = new Object();
    
    // WRONG: Can cause deadlock
    public void method1() {
        synchronized (lock1) {
            synchronized (lock2) {
                // Work here
            }
        }
    }
    
    public void method2() {
        synchronized (lock2) { // Different order!
            synchronized (lock1) {
                // Work here
            }
        }
    }
    
    // RIGHT: Always acquire locks in the same order
    public void safeMethod1() {
        synchronized (lock1) {
            synchronized (lock2) {
                // Work here
            }
        }
    }
    
    public void safeMethod2() {
        synchronized (lock1) { // Same order as safeMethod1
            synchronized (lock2) {
                // Work here
            }
        }
    }
}
Java

Best Practices For Java Concurrency Basics

Here are some good practices that could save you countless debugging sessions:

1. Use High-Level Concurrency Utilities

Instead of managing synchronization manually, leverage Java’s concurrent collections and utilities:

// Instead of synchronized HashMap
Map<String, Integer> safeMap = new ConcurrentHashMap<>();

// Instead of synchronized ArrayList
List<String> safeList = new CopyOnWriteArrayList<>();

// For producer-consumer scenarios
BlockingQueue<Task> taskQueue = new LinkedBlockingQueue<>();
Java

2. Properly Size Your Thread Pools

For CPU-bound tasks: Number of cores + 1 For I/O-bound tasks: Number of cores × (1 + wait time / service time)

// CPU-bound tasks
int cores = Runtime.getRuntime().availableProcessors();
ExecutorService cpuPool = Executors.newFixedThreadPool(cores + 1);

// I/O-bound tasks (rough estimate)
ExecutorService ioPool = Executors.newFixedThreadPool(cores * 2);
Java

3. Always Handle InterruptedException Properly

public void interruptibleTask() {
    try {
        // Some long-running operation
        Thread.sleep(10000);
    } catch (InterruptedException e) {
        // Restore interrupted status
        Thread.currentThread().interrupt();
        // Handle the interruption gracefully
        System.out.println("Task was interrupted");
    }
}
Java

4. Use CompletableFuture for Complex Async Operations

CompletableFuture<String> future = CompletableFuture
    .supplyAsync(() -> fetchUserData())
    .thenApplyAsync(userData -> processUserData(userData))
    .thenApplyAsync(processedData -> generateReport(processedData))
    .exceptionally(throwable -> {
        System.err.println("Error in async chain: " + throwable.getMessage());
        return "Default report";
    });

// Non-blocking way to get result
future.thenAccept(report -> System.out.println("Report: " + report));
Java

FAQs: Quick Answers on Java Concurrency Basics

How do you create a thread in Java?

You can create threads by implementing the Runnable interface (recommended) or extending the Thread class. The modern approach uses ExecutorService with thread pools for better resource management.

Concurrency vs Multithreading – are they the same?

Multithreading is one way to achieve concurrency in Java. Concurrency is the broader concept of managing multiple tasks, while multithreading specifically uses multiple threads to achieve this.

How to avoid race conditions in Java?

Use synchronization mechanisms like synchronized blocks, atomic classes (AtomicInteger, AtomicReference), or concurrent collections (ConcurrentHashMap) to ensure thread-safe access to shared resources.

When should I use a Thread Pool?

Use thread pools whenever you have multiple tasks to execute, especially short-lived or recurring tasks. Thread pools reuse threads, reducing the overhead of thread creation and destruction.

What’s the difference between execute() and submit() in ExecutorService?

execute() runs tasks without returning results and can’t handle checked exceptions. submit() returns a Future object that allows you to get results and handle exceptions properly.

Advanced Topics: What’s Next?

As you master these basics, consider exploring:

  • Virtual Threads (Project Loom) – Available in Java 19+, these lightweight threads can revolutionize how we handle concurrency
  • Reactive Programming with libraries like RxJava or Project Reactor
  • Fork/Join Framework for divide-and-conquer algorithms
  • Lock-free programming with atomic operations

Pro Tip💡: Learn about differences between ForkJoinPool and ThreadPoolExecutor

Real-World Performance Tips

From my experience building high-traffic applications:

  1. Monitor thread pool metrics in production – active threads, queue size, and task completion rates tell you everything
  2. Use thread dumps when debugging concurrency issues – they reveal exactly what threads are doing
  3. Avoid creating threads in hot paths – always use pre-initialized thread pools
  4. Consider virtual threads for I/O-heavy applications in modern Java versions

Wrapping It Up

Java concurrency basics aren’t just about making code faster – they’re about building robust, scalable applications that can handle real-world demands. Start with simple thread pools, understand the fundamentals, and gradually explore advanced topics.

The key is to practice with small examples before tackling complex scenarios. Every expert was once a beginner who made mistakes, learned from them, and kept pushing forward.

Remember: concurrency is a tool, not a goal. Use it when it solves real problems, not just because you can. Your future self (and your users) will thank you for building applications that are both powerful and reliable.

Ready to dive deeper? Check out these essential resources:

  • Oracle’s Official Java Concurrency Tutorial
  • “Java Concurrency in Practice” by Brian Goetz (the definitive guide)
  • OpenJDK’s documentation on Virtual Threads

Keep experimenting, keep learning, and most importantly – don’t be afraid to make mistakes. They’re the best teachers in the concurrency world!s like a cook in your hive of operations, handling one task while other threads do theirs. Multiple cooks doing different dishes using the same kitchen resources is precisely like how multiple threads in your Java application will use the same CPU and memory.

However, it doesn’t necessarily mean they are running exactly at the same instant (unless you have multiple CPU cores). Instead, it’s like the chef rapidly switching between tasks, giving the illusion of parallel execution.

But here’s the catch: too many threads buzzing at once? That’s how you get stung. (Deadlocks, race conditions… trust me, you don’t want that mess.)

Share if liked!

  • Click to share on Facebook (Opens in new window) Facebook
  • Click to share on X (Opens in new window) X
  • Click to share on LinkedIn (Opens in new window) LinkedIn
  • Click to share on Pinterest (Opens in new window) Pinterest
  • Click to share on Reddit (Opens in new window) Reddit
  • Click to share on Tumblr (Opens in new window) Tumblr
  • Click to share on Pocket (Opens in new window) Pocket

You may also like


Discover more from CodeSamplez.com

Subscribe to get the latest posts sent to your email.

First Published On: January 16, 2025 Filed Under: Programming Tagged With: concurrency, java, thread

About Rana Ahsan

Rana Ahsan is a seasoned software engineer and technology leader specialized in distributed systems and software architecture. With a Master’s in Software Engineering from Concordia University, his experience spans leading scalable architecture at Coursera and TopHat, contributing to open-source projects. This blog, CodeSamplez.com, showcases his passion for sharing practical insights on programming and distributed systems concepts and help educate others.
Github | X | LinkedIn

Reader Interactions

Leave a ReplyCancel reply

Primary Sidebar

  • Facebook
  • X
  • Pinterest
  • Tumblr

Subscribe via Email

Top Picks

python local environment setup

Python Local Development Environment: Complete Setup Guide

In-Depth JWT Tutorial Guide For Beginners

JSON Web Tokens (JWT): A Complete In-Depth Beginners Tutorial

The Ultimate Git Commands CheatSheet

Git Commands Cheatsheet: The Ultimate Git Reference

web development architecture case studies

Web Development Architecture Case Studies: Lessons From Titans

static website deployment s3 cloudfront

Host Static Website With AWS S3 And CloudFront – Step By Step

Featured Dev Tools

  • JSON Formatter
  • Diff Checker

Recently Published

service worker framework integration

Service Workers in React: Framework Integration Guide

service worker caching strategies

Service Worker Caching Strategies: Performance & Offline Apps

service worker lifecycle

Service Worker Lifecycle: Complete Guide for FE Developers

what is service worker

What Is a Service Worker? A Beginner’s Guide

Dynamic Typing In Python

Dynamic Typing in Python: A Comprehensive Guide For Beginners

Footer

Subscribe via Email

Follow Us

  • Facebook
  • X
  • Pinterest
  • Tumblr

Explore By Topics

Python | AWS | PHP | C# | Javascript

Copyright © 2025

https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_71f21946c5539358ed6887ca3db6e806f890f72bc17c5df9d210c2f93d72f42e560fe29fc8160c58386e1bbb0014e61cd63db16e318f177a5112ef228890bdb1.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_c402e38f1879c18090377fb6b73b15ac158be453ecda3a54456494fe8aba42b990c293bae5424e5643d52515ffc2067e0819995be8d07d5bba9107a96780775c.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_ffc3511227531cc335353c54c3cbbaa11d0b80e5cb117478e144436c13cd05495b67af2e8950480ed54dbdabcdcef497c90fdb9814e88fe5978e1d56ce09f2cf.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_d57da9abfef16337e5bc44c4fc6488de258896ce8a4d42e1b53467f701a60ad499eb48d8ae790779e6b4b29bd016713138cd7ba352bce5724e2d3fe05d638b27.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_edc0e9ef106cc9ef7edd8033c5c6fcff6dc09ee901fd07f4b90a16d9345b35a06534f639e018a64baaf9384eee1df305570c1ecad747f41b787b89f53839962b.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_bc2182bb3de51847c8685df18692deda654dbf90fb01b503eb1bb0b68b879a051b91f30a9210ed0b2ba47c730db14b159cd9391ffdcd7117de397edd18366360.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_dccc492dbbfdac33d1411f9df909e849c7268fcf99b43007f278cde3a0adc0ae00e8cae5ec81cf255b9a6eae74e239ba1fa935572af77173219cb081f7d2327d.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_00bacf9e36181aac2b666d110cd9d82257f846766e7041b2d7b3c909b458982931ccc9b203e37098fbdfcf43ca359cf04e3824a724a6789fc204196d3a72ad29.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_65d41e8acf8460659d5800381e03c2a9dd52ec71287a6f20307e1eb7da27691a8e74e4408e23656afa7b5bd74b82697984fd2b1d4501251c6e73c6a935b6b92f.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_aa5a5d229b421633f4247380e1e8c0a4854f82efb35d13a5b07b7b8fbe22e98842a580f063e5965345a51c477a7f5c2585edf8dd7d896b2438dc61f91d8d970c.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_bb8058a9e234a7ffaa98891b1df7f6b8e67410e6984568b151daa05113b8c7f89d7b5918ae73f020998a16f7f5a087a13d6a9a5e5d7c301e2ca12fd9d1f8d177.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_647fb67570c6108fb10ae6785a1abdbecac99ffcf80351d0bef17c3cf783dce497b1895fcdaae997dacc72c359fbfb128cc1540dd7df56deb4961e1cd4b22636.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_f7a298a0f1f754623fe3b30f6910ce2c1373f715450750bd7a391571812b00df1917e2be90df6c4efc54dbdfda8616278a574dea02ba2c7a31992768df8db334.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_df30604d5842ef29888c3c1881220dc6d3f8854666d94f0680c5f38aa643c5fb79b10eb9f10998d8856eb24ca265783195937434fd6c2bb8e4846df0277a7fb7.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_f17fe6fb0993f1703181d7ae9e9ea570f3d33a43afd6f2a4567daa1a6745698c7b8193dc72d50991d2dd87cd3dcf663959206607d193a9b57926d061a1f50aef.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_945dcbab2c2a131f3c90f4fb91776b76066d589f84fb55bff25cd5d79a56218000616bfca1f0af9a74f32348693707af49e8fe624de8aa34f1e1c5b6a25709cf.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_65820d252e1b93596de6697fd5f02483f3e2524a0696c7d698b64745edb32bf5831a90e556842f5f88c8209766cc78ca3a41cf783d20236a9f90d4a7ea7b3e72.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_7286884797a1210857e2a36f8ab46604b0034b6abf512380447a5763c873db6a72b8547f660053de0ea69faef1eb64878f39ff4b0ea86c963efab95764a3bf5b.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_cbcf6c279ac6c6a25ae138bf964e64a5fd90d22dcdf8a53b6fe7b72cefa51063bfb0181a6e50dd2acdcae2795619887d1d83b10461e44e5103be756f2588d837.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_47965bc586b95810c925b9df3314e0c9a5cd121e70ca0831f87df0bc034695de4f83ecf2def86f737e14614ee138794473cf32cd3082a5d38db9dec0c1f266fa.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_12aa201cea075846d266536aa222d64d4088b851d87f55dac5e611b77add6826c8ebc6e82650fcd1a9e88a05a0072dedd195719c5f64cd4580a0acd8aee05d92.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_eaa93529c38925eb07368c361382956fbd910b5106b8589fa7e2e15a59c46437de3698d50ec4754bc45e6dfac47b3f41cc4c6112d7ede071ca8950385d4987dc.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_6bc8d64588c7609a4e935c1c22d3001a48401a9fc7d3e7e5f738ad211ce625cceb42356d3a8b248a2466550aa1be125c1c27a040c9c2298e56efd93c5ada4eee.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_d87ea86dd0e7ecdd5fe7a5bb67becf943e57c3add866b456034d51663d099031bd563e12f61fdccc044969adf938a8584ed22ccd401ab8b669e20e4f92fb54e8.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_35311c3d71a3605fad4e1d6b50f3911311cdcc46418bdf56d6d0308a75a69585269ee7582a335e29989adf308fa1a81a10a2c2d4e257e9d680447a4996f6269e.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_ed203ae78cbd5d0d7f0de78c3fc2160c89a1f23ae60fe4dedd0f2422beb9b63f801d45786553e4ed4913fc57caaf8cad3112579c33c8914e339634f35e3cc4e8.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_4d1fae16f3501b97ac1dbc8ca35997b3d3899c98dd478a204920e92de4a093d0c2e9ab1ccbc16b0c3423c0be3ef59d7aaefc6edd559961e5169236aa4c73c7f7.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_f4fc182ef03c12e9dcadd6febc3dbaa4a29134469057ca9e8ec0be2f2de29a494514ff4b59798e74debf26f78b2df2b3e2665c69b77035761fb463b783202915.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_85c0f2769456e60153b0fd8364b82a035da53384f62de342d9bdca806f3f1ea56486919a00497a18d457949c82bf8bfacc4423fc332074ddf71a49a8fe628fff.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_67f99bef3678c549a14b5f2ff790cce6aba338dca29020755444231b45fa0f980f795e3658496ba70739a099b47b22bc2eab564343ac6132309de3adbbae3455.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_09eecfdd96206ed13830b4b93cfb2cc75cd38083671a34194437b5734b5bb38712209dc335b07e3266ceb3c3a44a155b9bbe5f3e0e1105b19dd45d3def76f020.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_4c089fbdb88e3b624a6f884d3ba1bf606f003bfcd3742376d0d353cd62181dc663aa3811a56361c3100de488fc4d6595a50de2b26f058921ba74f5f2c1b5be00.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_897ff6ac314c5f5e0f496c6af624bd9abf296a02cb5aeb850b9220b6dc3ce2fc4004cb02ed8b59d59d4b9c9d90f050d6eebc1d08ecaebab2f671f7d9367e6410.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_67d1e619e71d36ae00ddcf85ee18628bb4eb64fcb3d6119b463e75cb987013420a21136d19cd03e6634ccc01cfa9af4a357930e4cf6900953b7812efb4f249fb.js