1. Giới thiệu về Threads

Multithreading (đa luồng) dùng để chỉ đến hai hay nhiều nhiệm vụ thực hiện đồng thời trong cùng một chương trình duy nhất. Mỗi thread là một con đường độc lập thực hiện trong cùng một chương trình. Nhiều thread có thể chạy đồng thời trong một chương trình. Mỗi thread trong java được tạo ra và điều khiển bởi class java.lang.Thread . Một chương trình java có thể có rất nhiều thread, những thread này có thể chạy song song, đồng bộ hoặc bất đồng bộ.
Multithreading có nhiều ưu điểm hơn so với Multiprocessing, chẳng hạn như :
• Threads are lightweight compared to processes.
• Thread chia sẻ cùng một không gian địa chỉ và do đó có thể chia sẻ cả dữ liệu và code.
• Chuyển đổi context giữa các thread thường ít tốn kém hơn so với process.
• Chi phí liên lạc giữa các thread là tương đối thấp so với chi phí liên lạc giữa các process.
• Thread cho phép các nhiệm vụ khác nhau thực hiện đồng thời.
Thread Creation

Có hai cách để tạo ra Thread trong java:
• Implement Runnable interface (java.lang.Runnable)
• Extend Threads (java.lang.Thread)

Implement Runnable Interface

Public interface Runnable{
Void run();
}

Một cách để tạo ra thread trong java là implement Runnable interface và sau đó khởi tạo một Object của class. Ta chỉ cần override method run() để thực hiện xử lý logic trong thread.
Các bước để tạo thread dựa trên Runnable interface như sau :
1. Một class implement Runnable interface, cung cấp method run() để thực hiện thread. Một đối tượng của class này là một đối tượng Runnable.
2. Một object của class Thread được tạo ra bằng cách thông qua Thread constructor. Đối tượng thread bây giờ có một đối tượng Runnable và method để thực hiện.
3. Method start() được gọi trên Thread object được tạo ra ở bước trước đó. Method start() ngay lập tức trả về sau khi một thread được sinh ra.
4. Thread kết thúc khi method run() kết thúc, kết thúc bình thường khi chạy hết các câu lệnh hoặc bằng cách throws ra exception.
Dưới đây là một chương trình minh họa hoạt động của thread khi sử dụng Runnable interface. Để bắt đầu thread ta cần phải gọi method start() :

Class RunnableThread implements Runnable{

Thread runner;
Public RunnableThread(){
}
Public RunnableThread(String threadName){
Runner = new Thread(this, threadName); // (1) Create a new thread
System.out.println(runner.getName);
Runner.start(); // (2) Start the thread
}
Public void run(){
//Display info about this particular thread
System.out.println(Thread.currentThread());
}
}

Public class RunnableExample{

Public static void main(String[] args){
Thread thread1 = new Thread(new RunnableThread(), “thread1”);
Thread thread2 = new Thread(new RunnableThread(), “thread2”);
RunnableThread thread3 = new RunnableThread(“thread3”);
// Start the threads
Thread1.start();
Thread2.start();
Try{
// delay for one second
Thread.currentThread().sleep(1000);
}catch(Exception e){
}
// Display info about the main thread
System.out.println(Thread.currentThread());
}
}

Output

thread3
Thread[thread1,5,main]
Thread[thread2,5,main]
Thread[thread3,5,main]
Thread[main,5,main]

Cách làm này tạo ra một thread bằng cách implement Runnable interface có thể extends một số class khác.

Leave a Reply

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

You may use these HTML tags and attributes:

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>