एडवांस्ड थ्रेडिंग पैटर्न

Java में कोड ऑप्टिमाइज़ करना

Pavlos Kosmetatos

Lead Engineer @Wealthyhood

थ्रेड पूल की बुनियाद

थ्रेड बनाना महँगा होता है!

$$

थ्रेड पूल:

  • मौजूदा थ्रेड्स को दोबारा उपयोग करें
  • एक साथ चलने वाले थ्रेड्स की संख्या नियंत्रित करें
  • ExecutorService इंटरफ़ेस से मैनेज होते हैं
Java में कोड ऑप्टिमाइज़ करना

थ्रेड पूल बनाना

// Fixed thread pool with 4 threads
ExecutorService fixedPool = Executors.newFixedThreadPool(4);


// Cached thread pool that grows as needed ExecutorService cachedPool = Executors.newCachedThreadPool();
// Single-threaded executor ExecutorService singleExecutor = Executors.newSingleThreadExecutor();
Java में कोड ऑप्टिमाइज़ करना

टास्क सबमिट करना

ExecutorService executor = Executors.newFixedThreadPool(4);

// Submit a task with no return value
executor.execute(() -> System.out.println("Simple task"));

// Submit a task with a return value (Callable)
Future<Integer> future = executor.submit(() -> {
    Thread.sleep(1000);
    return 42;
});

// Get result from Future (blocks until complete)
int result = future.get();
Java में कोड ऑप्टिमाइज़ करना

एग्जीक्यूटर बंद करना

// Signal shutdown, but continue running existing tasks
executor.shutdown();


// Wait for termination (with timeout) boolean terminated = executor.awaitTermination(5, TimeUnit.SECONDS);
// Force immediate shutdown, canceling running tasks executor.shutdownNow();
Java में कोड ऑप्टिमाइज़ करना

CompletableFuture क्या है

  • CompletableFuture
  • Java 8 से Java की concurrency API का हिस्सा
  • asynchronous प्रोग्रामिंग का मॉडर्न तरीका
  • मैन्युअली या Function के जरिए पूरा किया जा सकता है
  • callbacks से ऑपरेशन चेन करने देता है
  • explicit थ्रेड पूल के साथ या बिना काम करता है
Java में कोड ऑप्टिमाइज़ करना

CompletableFuture बनाना

// Run async with default executor
CompletableFuture<Void> runAsync = 
    CompletableFuture.runAsync(() -> performTask());

// Supply async with custom executor ExecutorService executor = Executors.newCachedThreadPool(); CompletableFuture<String> supplyAsync = CompletableFuture.supplyAsync(() -> fetchData(), executor);
Java में कोड ऑप्टिमाइज़ करना

ऑपरेशन चेन करना

CompletableFuture<String> future = CompletableFuture
    .supplyAsync(() -> fetchUserData(userId))
    .thenApply(data -> extractUsername(data))
    .exceptionally(ex -> "Unknown user");

// Access to result when ready
future.thenAccept(result -> System.out.println(result));
Java में कोड ऑप्टिमाइज़ करना

अभ्यास करते हैं!

Java में कोड ऑप्टिमाइज़ करना

Preparing Video For Download...