By GokiSoft.com| 17:18 31/07/2023|
Java Advanced

[Share Code] Bài thi Java 2 - C2209I

Bài thi Java 2

Tóm tắt nội dung thi:
	- Exception
	- Collections:
		ArrayList & Vector
		Hashmap
	- Thread
		Đồng bộ 2 Thread
			- B1. Tạo Thread
			- B2. Viết logic cho các Thread
			- B3. Thực hiện đồng bộ (sync)
			- B4. Kiểm soát wait & notify
	- File
		- FileInputStream & FileOutputStream
		- FileReader & FileWriter + Buffered...
		- ObjectInputStream & ObjectOutputStream
	- CSDL:
		- Console
		- Java Swing
		- Các bước triển khải
			B1. Tạo CSDL
			B2. Tạo table & mockup dữ liệu
			B3. Tạo dự án + nhúng thư viên jdbc mysql driver maven
			B4. Mapping model <-> tables
			B5. CRUD
			B6. Tạo UI/Logic Console
			B7. Nối CRUD & UI
	- Localization: Đa ngôn ngữ
	- Regular Expression
	- Không sử dụng Scanner để nhập -> Dùng cách khác
=============================================================================

#Main.java

/*
 * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
 * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
 */
package com.gokisoft.bt3250;

/**
 *
 * @author teacher
 */
public class Main {
    public static void main(String[] args) {
        SharedData sharedData = new SharedData();
        Thread1 t1 = new Thread1(sharedData);
        Thread2 t2 = new Thread2(sharedData);
        
        t2.start();
        t1.start();
    }
}

#SharedData.java

/*
 * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
 * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
 */
package com.gokisoft.bt3250;

import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Random;
import java.util.Set;

/**
 *
 * @author teacher
 */
public class SharedData {
    Map<String, String> languages;
    String key;
    int count;

    public SharedData() {
        languages = new HashMap<>();
        languages.put("Monday", "T2");
        languages.put("Tuesday", "T3");
        languages.put("Wednessday", "T4");
        languages.put("Thurday", "T5");
        languages.put("Friday", "T6");
        languages.put("Saturday", "T7");
        languages.put("Sunday", "CN");
        
        count = 0;
    }
    
    public String getEN() {
        Set<String> keys = languages.keySet();
        Object[] keyList = keys.toArray();
        
        Random random = new Random();
        int rad = random.nextInt(keyList.length);
        
        key = (String) keyList[rad];
        
        count++;
        
        return key;
    }
    
    public String getVN() {
        return languages.get(key);
    }
    
    public boolean isLive() {
        return count < 20;
    }
}

#Thread1.java

/*
 * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
 * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
 */
package com.gokisoft.bt3250;

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

/**
 *
 * @author teacher
 */
public class Thread1 extends Thread{
    SharedData sharedData;

    public Thread1(SharedData sharedData) {
        this.sharedData = sharedData;
    }
    
    @Override
    public void run() {
        while(sharedData.isLive()) {
            synchronized (sharedData) {
                String en = sharedData.getEN();
                System.out.println(en);
                
                sharedData.notifyAll();
                try {
                    sharedData.wait();
                } catch (InterruptedException ex) {
                    Logger.getLogger(Thread1.class.getName()).log(Level.SEVERE, null, ex);
                }
            }
        }
        
        synchronized (sharedData) {
            sharedData.notifyAll();
        }
        System.out.println("T1 stop");
    }
}

#Thread2.java

/*
 * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
 * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
 */
package com.gokisoft.bt3250;

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

/**
 *
 * @author teacher
 */
public class Thread2 extends Thread {

    SharedData sharedData;

    public Thread2(SharedData sharedData) {
        this.sharedData = sharedData;
    }

    @Override
    public void run() {
        while (sharedData.isLive()) {
            synchronized (sharedData) {
                sharedData.notifyAll();
                try {
                    sharedData.wait();
                } catch (InterruptedException ex) {
                    Logger.getLogger(Thread2.class.getName()).log(Level.SEVERE, null, ex);
                }

                String value = sharedData.getVN();
                System.out.println(value);
            }
        }
        
        synchronized (sharedData) {
            sharedData.notifyAll();
        }
        System.out.println("T2 stop");
    }

}
Tags:



Phản hồi từ học viên

5

(Dựa trên đánh giá ngày hôm nay)

Đăng nhập để làm bài kiểm tra

Chưa có kết quả nào trước đó