ソフトウェアプロセスJAVA 6第1-0802


ソフトウェアプロセスJAVA 6第1-0802


1.三色


実行中のプログラムをプロセスと呼びます.通常、1つのプロセスで1つのタスクが実行されますが、このスレッドでは、1つのプロセス内で2つ以上のタスクを同時に実行できます.

2.共有リソース


複数のスレッドが共有リソースにアクセスする場合は、同期によって正しい値を指定する必要があります.supplyクラスは、一定時間ごとに一定時間のデータを提供します.これは、ユーザースレッドとして実装されます.ユーザー(スレッド)がソースから生成されたデータを消費し、待機しているリソースを起動する場合は、notifyメソッドを使用します.手動優先度が低く、実行できません.この場合、notify allメソッド(すべての待機スレッドの起動)を使用できます.

3.Threadのハンバーガーショップコードを使う

package com.busan.fullstack.thread;

public class HamTestMain {
	static Supply sp = new Supply();
	
	public static void main(String[] args) {
			sp.start();
			Consumer cs = new Consumer();
			Consumer cs1 = new Consumer();
			Consumer cs2 = new Consumer();
			Consumer cs3 = new Consumer();
			cs.start();
			cs1.start();
			cs2.start();
			cs3.start();

	}
}
package com.busan.fullstack.thread;

public class Supply extends Thread {
	static int ham = 10;
	int j =1;
	static int i=1;
	
	@Override
	public void run() {
		while(true) {
			try {
				Thread.sleep(3000);
				make();
			}catch(Exception e) {
				e.printStackTrace();
			}
		}
	}
	
	public synchronized void make() {
		ham=ham+1;
		System.out.println(j+" 번째 햄버거 공급");
		notify();
		j++;
	}
	
	public synchronized void buy() {
		Thread t = Thread.currentThread();
		while(ham==0) {
			System.out.println("햄버거 다 팔림");
			System.out.println("wait된 쓰레드"+t.getName());
			try {
				wait();
				System.out.println("wait에서 깨어난 쓰레드"+t.getName());
				System.out.println("쓰레드 상태"+t.getState());
			}catch(Exception e) {
				e.printStackTrace();
			}
		}
		ham = ham-1;
		System.out.println(t.getName()+" "+i+" 번째 햄버거 팔림");
		i++;
	}
}
package com.busan.fullstack.thread;

public class Consumer extends Thread {

	@Override
	public void run() {
		while(true){
			try {
				HamTestMain.sp.buy();
				this.sleep(2000);
			}catch(Exception e) {
				e.printStackTrace();
			}
		}
	}
	
}
<Result>

Thread-1 1 번째 햄버거 팔림
Thread-2 2 번째 햄버거 팔림
Thread-3 3 번째 햄버거 팔림
Thread-4 4 번째 햄버거 팔림
Thread-3 5 번째 햄버거 팔림
Thread-1 6 번째 햄버거 팔림
Thread-4 7 번째 햄버거 팔림
Thread-2 8 번째 햄버거 팔림
1 번째 햄버거 공급
Thread-3 9 번째 햄버거 팔림
Thread-4 10 번째 햄버거 팔림
Thread-1 11 번째 햄버거 팔림
햄버거 다 팔림
wait된 쓰레드Thread-2
2 번째 햄버거 공급
wait에서 깨어난 쓰레드Thread-2
쓰레드 상태RUNNABLE
Thread-2 12 번째 햄버거 팔림
햄버거 다 팔림
wait된 쓰레드Thread-3
햄버거 다 팔림
wait된 쓰레드Thread-4
햄버거 다 팔림
wait된 쓰레드Thread-1
햄버거 다 팔림
wait된 쓰레드Thread-2
3 번째 햄버거 공급
wait에서 깨어난 쓰레드Thread-3
쓰레드 상태RUNNABLE
Thread-3 13 번째 햄버거 팔림
햄버거 다 팔림
wait된 쓰레드Thread-3
4 번째 햄버거 공급
wait에서 깨어난 쓰레드Thread-4
쓰레드 상태RUNNABLE
Thread-4 14 번째 햄버거 팔림
햄버거 다 팔림
wait된 쓰레드Thread-4
5 번째 햄버거 공급
wait에서 깨어난 쓰레드Thread-1
쓰레드 상태RUNNABLE
Thread-1 15 번째 햄버거 팔림
햄버거 다 팔림
wait된 쓰레드Thread-1

4. StringTokenizer


スペースまたは指定した区切り文字がある場合、後続の文字列はスペースに埋め込まれたクラスに移動します.したがって,BufferedReaderでsplit法を用いてせん断するよりもはるかに速い.通常の式やインデックスアクセスなどの処理が不要な場合は、StringTokenierを使用するとより効率的です.
StringTokenizer基本構造
package com.busan.fullstack;

import java.util.StringTokenizer;

public class StringTokenizerTest {
	public void test() {
		String test1="a b d e f";
		StringTokenizer st1 = new StringTokenizer(test1);
		while(st1.hasMoreTokens()) {
			System.out.println(st1.nextToken());
		}
		
		String test="a b d f l zz";
		StringTokenizer st = new StringTokenizer(test,"&");
		while(st.hasMoreTokens()) {
			System.out.println(st.nextToken());
		}
	}
	
	public static void main(String[] args) {
		StringTokenizerTest stt = new StringTokenizerTest();
		stt.test();
	}
}

5. BBSDTO


テーブルの各レコード値に応答するか、画面(ビュー)側でユーザーが入力した値を格納します.
第120条眠気疲れ2021.08.02
package com.busan.fullstack.dto;

import java.sql.Timestamp;

public class BBSDto {
	private int articleNum;
	private String id;
	private String title;
	private String content;
	private Timestamp wirteDate;
}

6.oracleデータベース


Oracleショートカットのダウンロード👆
SQLダウンロードショートカット👆
-Oracleへの接続方法
  • 1)Class.forName()を使用してoracleドライバ
  • をロード
  • 2)DriveManagerのgetConnection()を使用してdb接続
  • を返します.
  • 3)Connection上の準備状態()を使用してクエリー文をインプラントし、準備状態返信
  • を受け取る
  • 4)Prepared Statementを使用してクエリー
  • を実行
  • 5)クエリーを実行するには2つの方法があります.
  • a.select文:executeQuery()
  • b.文の挿入、削除、更新:executeUpdate()
  • 6)5回であればaはResultSet,bは整数
  • を返す.
  • 7)select文を問い合わせる場合は、ResultSetを使用して戻り値
  • を読み込む必要があります.