IMG-LOGO
Trang Chủ Java Advanced Share Code - Thread trong java + Thread.Sleep + join trong java
×

Lý Thuyết

01. exception + debug + package - lập trình Java Nâng Cao 02. Tìm hiểu collections, Sets, Maps và Generic - lập trình java nâng cao 03. Hướng dẫn đọc ghi file FileInputStream, FileOutputStream, ObjectInputStream trong java - lập trình java nâng cao BT01. chua bai tap ObjectOutputStream & ObjectInputStream - lập trình java nâng cao 04. Tìm hiểu Thread - Phân 1 - lập trình java nâng cao 05. Tìm hiểu Thread trong Java - Phần 2 - lập trình java nâng cao 06. Tìm hiểu Thread trong java - Phần 3- lập trình java nâng cao BT02. Chữa bài tập Thread - Lập trình Java 07. Đông bộ thread + wait notify + synchronized + Lập trình Java - lập trình java nâng cao 08. Giải thích synchronized + Lap trinh Java nang cao BT03. Chữa bài tập hiển thị đồng bộ Thông tin tên & địa chỉ trên 2 thread khác nhau - java- lập trình java nâng cao BT04. chữa bài tập quản lý bán vé máy bay - java nâng cao 09. Kết nối MySQL trong java swing JDBC trong java - lập trình java nâng cao 10. Kết nối CSDL bằng java swing phần 2 - lập trình java nâng cao 11. Design Pattern lập trình java nâng cao - lập trình java nâng cao BT05. Bài tập quản lý sở thú - Phần 1 - lập trình java nâng cao BT06. Bài tập quản lý sở thú - Phần 2 - lập trình java nâng cao BT07. Hướng dẫn chữa bài tập JDBC - quản lý sinh viên - lập trình java nâng cao BT08. Quản lý sản phẩm + 2 bảng danh mục & sản phẩm + Lập trình java nâng cao BT09. Ứng dụng quản lý sinh viên - nhập dữ liệu từ file json - java nâng cao 12. Chuyển đổi json sang object java (sử dụng thư viện gson) - lập trình java nâng cao BT10. Lập trình java nâng cao - chữa bài tập tổng quát 181

Bài Tập

Java Advanced- BT18 Quản lý thông tin sinh & lưu file (ObjectOutputStream & ObjectInputStream) Java Advanced- Bài tập ôn luyện String, StringBuilder, StringBuffer Java Advanced- Chương trình quản lý sinh viên bằng HashMap File - Quản lý thông tin sinh viên Bài tập nén File & giải nén File & Liệt kê files trong 1 thư mục - winrar - winzip Bài tập quản lý sách & lưu thông tin trên Files Thread thực hiện in ngẫu nhiên các số nguyên và ký tự MultiThread - Sinh số ngẫu nhiên và hiển thị bình phương số ngẫu nhiên & Synchronized trong Java MultiThread - Synchronized trong Java - Đồng bộ 3 threads - Sinh số ngẫu nhiên, bình phương, và chia hết Tao tác dữ liệu lên Shared Object sử dụng MultiThreading trong java Sử dụng MultiThreading sinh ký tự a-zA-Z trong java Bài tập quản lý sinh viên bằng Java Swing + File Bài Tập Quản Lý Sinh Viên - CSDL - Java Swing Tạo tài liệu XML/JSON - quản lý lớp học Viết chương trình phân tích tài liệu XML thông tin cá nhân bằng Java Quản lý thông tin cá nhân Profile bằng java - import + export XML File Tạo JSON file & đọc nội dung JSON file thông tin cá nhân bằng Java Tìm mảng a2 kết hợp mảng a1 tạo mảng a là các phân tử liên tiếp nhau Phần mềm quản lý sinh viên MySQL + Java - Chương trình quản lý sinh viên MySQL + Java - Lập Trình Java Bài tập - Viết chương trình quản lý sản phẩm - quản lý tin tức - quản lý bán hàng - Lập trình Java

Examination & Test

Examination & Test >> Quản lý bán hàng + java console Examination & Test >> Quản lý bán hàng + java swing Examination & Test + Quản lý sinh viên + kiểm tra 60 phút Quản lý sinh viên + XML + JSON + MySQL bằng Java Mini Project - Phân tích dự án + Phát triển phần mềm ATM Quản lý sách bằng Java - Lập trình Java [Share Code] Tìm hiểu về Generic & FileInputStream & FileOutputStream - Lập trình java nâng cao. [Examination] XML/JSON - T2008A




Share Code - Thread trong java + Thread.Sleep + join trong java

by GokiSoft.com - 15:22 27/03/2020 2,478 Lượt Xem

Source code bài giảng


Nội dung

- Thread : Luồng dữ liệu

- Synchronized : đồng bộ đa luồng

Lý do sử dụng Thread & tìm hiểu về thread


- Khi các bạn chơi game => Tiến trình

- Nhân vật game đang chạy -> thread (luồng)

- Cài đặt game -> 1 thread

- download file trên mạng -> 1 thread

- âm thanh vẫn đang play -> 1 thread


- Quan sát HĐH win/mac

- bật được rất nhiều app

=> chrome => 1 tiến trình

=> nghe nhạc => 1 tiến trình

=> code => 1 tiến trình

=> game => 1 tiến trình

=> chat ... =>tổng => 5 tiến trinh

- Round Robin => sắp xếp thành vòng tròn => hệ thống => sẽ thưc hiện là luôn phiên nhau xử lý lệnh cho chương trình

- 1s => CPU => hàng triệu lệnh

- tạo cho các bạn cảm giác như la tất cả các ứng dụng => đang chạy // => xử lý tuần tự


=> các bạn có suy nghĩ như thế nào về hoạt động của máy tính


Xây dựng 1 dự án đa luồng


Synchronized : đồng bộ đa luồng

- synchronized => methods

- wait, notify, notifyAll


/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package java2.lession4;

import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author Diep.Tran
 */
public class Main {
    public static void main(String[] args) {
        //Thread main => luong  chinh => khoi tao dau tien khi app dc bat
        //Cach 1
        Thread t1 = new Thread(new Runnable() {
            @Override
            public void run() {
                //goi toi xu ly code trong phan nay => khi ma t1.start() dc goi
                for (int i = 0; i < 10; i++) {
                    try {
                        Thread.sleep(1000);
                    } catch (InterruptedException ex) {
                        Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
                    }
                    System.out.println("t1 >> " + i);
                }
            }
        });
        t1.start();
        //Tai thoi diem nay => 2 thread >> t1 & main thread
        
        //Tao theo cach 2
        Thread t2 = new ThreadTwo("T2");
        t2.start();
        try {
            t2.join();
            //Tai thoi diem nay => 3 thread >> t1 & t2 & main thread
        } catch (InterruptedException ex) {
            Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
        }
        
        //Cach 3 >> tao ra thread
        ThreadThree r = new ThreadThree("T3");
        Thread t3 = new Thread(r);
        t3.start();
        
        //main thread
        for (int i = 0; i < 15; i++) {
            try {
                Thread.sleep(2000);
            } catch (InterruptedException ex) {
                Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
            }
            System.out.println("T1 >> isAlive >> " + t1.isAlive());
            System.out.println("T2 >> isAlive >> " + t2.isAlive());
            System.out.println("T3 >> isAlive >> " + t3.isAlive());
            System.out.println("Main thread >> " + i);
        }
    }
}



/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package java2.lession4;

import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author Diep.Tran
 */
public class ThreadThree implements Runnable{
    String name;
    
    public ThreadThree(String name) {
        this.name = name;
    }

    @Override
    public void run() {
        for (int i = 0; i < 10; i++) {
            try {
                Thread.sleep(1000);
            } catch (InterruptedException ex) {
                Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
            }
            System.out.println(name + " >> " + i);
        }
    }
    
}



/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package java2.lession4;

import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author Diep.Tran
 */
public class ThreadTwo extends Thread{
    String name;
    
    public ThreadTwo(String name) {
        this.name = name;
    }

    @Override
    public void run() {
        for (int i = 0; i < 10; i++) {
            System.out.println(name + " >> " + i + " >> " + isAlive());
            try {
                Thread.sleep(1000);
            } catch (InterruptedException ex) {
                Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
    }
    
}



/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package java2.lession4;

/**
 *
 * @author Diep.Tran
 */
public class MyBank {
    int money;

    public MyBank() {
    }

    public MyBank(int money) {
        this.money = money;
    }

    public int getMoney() {
        return money;
    }

    public void setMoney(int money) {
        this.money = money;
    }
    
    public synchronized void withDraw(int money, String threadName) {
        if(money <= this.money) {
            System.out.println("So tien rut : " + money + ", Thread : " + threadName);
            this.money -= money;
        } else {
            System.out.println("So tien rut vuot qua so tien hien tai" + ", Thread : " + threadName);
        }
        System.out.println("So tien hien tai: " + this.money);
    }
}



/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package java2.lession4;

/**
 *
 * @author Diep.Tran
 */
public class WithDrawThread extends Thread{
    String name;
    MyBank myBank;
    public WithDrawThread(MyBank myBank, String name) {
        this.myBank = myBank;
        this.name = name;
    }

    @Override
    public void run() {
//        for (int i = 0; i < 10; i++) {
            myBank.withDraw(800, name);
//        }
    }
    
}


Theo dõi cập nhật nội dung học trên Youtube & Facebook


Bình luận



Chia sẻ từ lớp học

Phân Loại Bài Viết

Danh Sách Bài Học

Đã sao chép!!!