ソフトウェアプロセス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.02package 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への接続方法
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
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();
}
}
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;
}
Reference
この問題について(ソフトウェアプロセスJAVA 6第1-0802), 我々は、より多くの情報をここで見つけました https://velog.io/@ljsk99499/JAVA0802テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol