Java Thread-Java口頭試験、DB口頭試験
2年生は専門の授業を受けていて、JAVAとDBを聞いています.
同じ授業で、同じ教室で口頭試験を受けます.二人の教授はそれぞれ教壇に座り、教授の前には口頭試験の学生椅子が置いてある.
口頭試験の順序は固定されており、まずX椅子に座っている学生は口頭試験に参加することができる.
教授ごとに1回に1人の学生しか試験できない.
JAVAとDBの口頭試験は異なる学生を同時に参加させることができる.
変更前のコード
class Students extends Thread {
Student(String n){
number=no;
}
public void run(){
javaTest.javaTellTest(number);
Students.dbTellTest(number);
}
}
class javaTest {
synchronized void javaTellTest("JAVA 구두시험본다");
}
class DBProfessor {
synchronized void dbTellTest("DB 구두시험본다");
}
class JavaTest2 {
public static void main(String[] args){
int number=Integer.parseInt(args[0]);
javaTest j = new javaTest();
DBProfessor = new DBProfessor();
Students s[] = new Students[number];
for(int i=0; i<s.length; i++){
s[i]=new Students(i+1,j);
s[i].start();
}
}
修正後のコード△このコードは実行できません.まず、あなたの気持ちを見てみましょう.
class Student extends Thread { // 학생 쓰레드 클래스
String hakbun,name;
Professor javaPf,dbPf;
Student(String h, String n, Professor jp, Professor dbp){
hakbun=h;
name=n;
javaPf=jp;
dbPf=dbp;
}
public void run(){
javaPf.javaOralTest(hakbun,name);
dbPf.dbOralTest(hakbun,name);
}
}
class Professor { // 공유자원 교수 클래스
int javaNo,dbNo;
synchronized void javaOralTest(String hakbun, String name) {
try {
long time = System.currentTimeMillis();
System.out.println(hakbun+name+"학생이 java 구두시험을"+time+"밀리 초에"+ ++javaNo + "번째로 본다");
Thread.sleep(1);
} catch(InterruptedException e) { }
}
synchronized void dbOralTest(String hakbun, String name) {
try {
long time = System.currentTimeMillis();
System.out.println(hakbun+name+"학생이 db 구두시험을"+time+"밀리 초에" ++dbNo + "번째로 본다");
Thread.sleep(1);
} catch(InterruptedException e) { }
}
}
public class OralTest {
public static void main(String[] args){
Professor javaP = new Professor();
Professor dbP = new Professor();
Student st[] = new Student[args.length/2];
for(int i=0; i<st.length; i++)
st[i]=new Student(args[i*2],args[i*2+1],javaP,dbP);
for(int i=0; i<st.length; i++)
st[i].start(); // 쓰레드 객체가 여러개일 때 start() 주는 법
}
}
紛らわしい内容、覚えなければならない内容args[]配列でhakbunが先に入って、それからnameなので?
Reference
この問題について(Java Thread-Java口頭試験、DB口頭試験), 我々は、より多くの情報をここで見つけました https://velog.io/@brandy_kim/자바-쓰레드-Java구두시험DB구두시험テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol