Groovy তে Concurrency এর মৌলিক ধারণা
Groovy তে Concurrency বলতে বোঝায় একাধিক কাজ বা প্রক্রিয়া একই সময়ে সম্পন্ন করার প্রক্রিয়া। Concurrency ব্যবহার করে প্রোগ্রামগুলিকে আরও দক্ষ এবং দ্রুত করা যায়, বিশেষত যেখানে একাধিক কাজ সমান্তরালে সম্পাদন করা হয়। Groovy তে Concurrency ব্যবহারের জন্য থ্রেডিং, GPars লাইব্রেরি, এবং অন্যান্য Concurrency ইউটিলিটি রয়েছে যা Java এর Concurrency টুলগুলির উপর ভিত্তি করে কাজ করে।
Groovy তে Concurrency ব্যবহারের পদ্ধতি
Groovy তে Concurrency ব্যবহারের প্রধান পদ্ধতিগুলি হল:
- Thread API
- ExecutorService
- GPars লাইব্রেরি
1. Thread API ব্যবহার করে Concurrency
Groovy তে থ্রেড তৈরি করা খুবই সহজ। Thread ক্লাস ব্যবহার করে নতুন থ্রেড তৈরি করা যায় এবং Concurrency অর্জন করা সম্ভব।
উদাহরণ: Thread ব্যবহার করে Concurrency
def task1 = new Thread({
println "Task 1 is running"
sleep(1000)
println "Task 1 completed"
})
def task2 = new Thread({
println "Task 2 is running"
sleep(500)
println "Task 2 completed"
})
task1.start()
task2.start()এখানে task1 এবং task2 নামে দুটি থ্রেড তৈরি করা হয়েছে এবং start() মেথডের মাধ্যমে তাদের সমান্তরালে চালানো হচ্ছে।
থ্রেডে যোগদানের জন্য join মেথড
task1.join()
task2.join()
println "Both tasks are completed."join মেথড ব্যবহার করে একটি থ্রেডের কাজ শেষ হওয়ার জন্য অপেক্ষা করা যায়।
2. ExecutorService ব্যবহার করে Concurrency
ExecutorService হলো Java এর একটি Concurrency ফ্রেমওয়ার্ক, যা Groovy তে ব্যবহার করা যায়। এটি থ্রেড পুল ম্যানেজমেন্ট সহজ করে এবং কাস্টম থ্রেড পুল তৈরি করা যায়।
উদাহরণ: ExecutorService ব্যবহার করে Concurrency
import java.util.concurrent.Executors
def executorService = Executors.newFixedThreadPool(2)
def task1 = {
println "Task 1 is running"
sleep(1000)
println "Task 1 completed"
}
def task2 = {
println "Task 2 is running"
sleep(500)
println "Task 2 completed"
}
executorService.submit(task1 as Runnable)
executorService.submit(task2 as Runnable)
executorService.shutdown()এখানে Executors.newFixedThreadPool(2) দিয়ে দুটি থ্রেড নিয়ে একটি থ্রেড পুল তৈরি করা হয়েছে এবং submit() মেথড ব্যবহার করে কাজ জমা দেওয়া হয়েছে।
3. GPars লাইব্রেরি ব্যবহার করে Concurrency
Groovy তে GPars লাইব্রেরি Concurrency এবং Parallelism কাজকে আরও সহজ করে তোলে। এটি Actor Model, Dataflow, এবং Parallel Collections সমর্থন করে, যা Concurrency পরিচালনার জন্য অনেক বেশি কার্যকর।
উদাহরণ: GPars ParallelCollection ব্যবহার করে Concurrency
@Grab(group='org.codehaus.gpars', module='gpars', version='1.2.1')
import groovyx.gpars.GParsPool
GParsPool.withPool {
[1, 2, 3, 4, 5].eachParallel { number ->
println "Processing number: $number"
sleep(500)
}
}
println "All tasks completed."এখানে eachParallel মেথড ব্যবহার করে একটি লিস্টের প্রতিটি আইটেম সমান্তরালে প্রক্রিয়াকরণ করা হচ্ছে।
উদাহরণ: GPars Actor ব্যবহার করে Concurrency
@Grab(group='org.codehaus.gpars', module='gpars', version='1.2.1')
import groovyx.gpars.actor.DefaultActor
class SimpleActor extends DefaultActor {
void act() {
loop {
react { message ->
println "Received message: $message"
}
}
}
}
def actor = new SimpleActor()
actor.start()
actor << "Hello, Actor!"
actor << "Another message"এখানে SimpleActor নামে একটি Actor তৈরি করা হয়েছে, যা বার্তা প্রাপ্তির জন্য react মেথড ব্যবহার করে।
Concurrency ব্যবহারের বিভিন্ন সুবিধা
- পারফরম্যান্স বৃদ্ধি: Concurrency এর মাধ্যমে প্রোগ্রাম বিভিন্ন কাজ সমান্তরালে সম্পন্ন করতে পারে, যা সময় সাশ্রয় করে।
- রিসোর্সের সঠিক ব্যবহার: থ্রেড এবং ExecutorService ব্যবহার করে কম রিসোর্সে বেশি কাজ সম্পন্ন করা সম্ভব।
- স্কেলেবিলিটি: GPars লাইব্রেরি ব্যবহার করে Parallel Collections এবং Actor Model এর মাধ্যমে সহজে স্কেলেবল অ্যাপ্লিকেশন তৈরি করা যায়।
সারসংক্ষেপ
Groovy তে Concurrency ব্যবহারের মাধ্যমে সমান্তরালে কাজ করার প্রক্রিয়া সহজ ও কার্যকরী হয়। Groovy তে Concurrency এর জন্য Thread API, ExecutorService, এবং GPars লাইব্রেরি রয়েছে, যা বিভিন্ন প্রয়োজন অনুযায়ী Concurrency পরিচালনা করতে সহায়তা করে। GPars লাইব্রেরি Actor Model, Parallel Collections ইত্যাদি সমর্থন করে যা সমান্তরালে কাজ করার জন্য একটি উন্নত পদ্ধতি প্রদান করে।
Read more