다중 루틴 생성의 두 가지 방식과 루틴 동기화 문제 실례
package jsj.java.exam.test08;
import java.util.Date;
/**
* 。
*
* 。
*/
public class Multithreading {
public static void main(String[] args) {
// LeftThread
//Thread left = ________081________;//2
Thread left=new LeftThread();
// RightThread
//Thread right = new Thread(________082________);//2
Thread right = new Thread(new RightThread());
//
left.setName(" ");
right.setName(" ");
// TODO
//________083________;//1
//________084________;//1
left.start();
right.start();
}
}
//class LeftThread extends ________085________ {//2
class LeftThread extends Thread {
public void run() {
for(int i=0; i<10; i++) {
System.out.println(" ");
}
}
}
//class RightThread implements ________086________ {//2
class RightThread implements Runnable {
public void run() {
for(int i=0; i<10; i++) {
System.out.println(" ");
}
}
}
문제2: 스레드 동기화 문제
package p2.v3;
/* , */
public class HusbandAndWifeStory {
public static void main(String[] args) {
BankAccount bankAccount = new BankAccount(3000);
WithDraw withdraw = new WithDraw(bankAccount);
Thread husband = new Thread(withdraw);
Thread wife = new Thread(withdraw);
husband.setName("HUSBAND");
wife.setName(" WIFE");
husband.start();
wife.start();
System.out.println(" :"+bankAccount.getBalance());
}
}
class BankAccount {
private int balance;
public BankAccount(int balance) {
this.balance=balance;
}
//
public int getBalance() {
return balance;
}
//
public void withdraw(int amount) {
balance = balance - amount;
}
}
class WithDraw implements Runnable {
private BankAccount account;
public WithDraw(BankAccount account) {
this.account = account;
}
@Override
public void run() {//
withdDraw();//
}
private synchronized void withdDraw(){//
System.out.println(Thread.currentThread().getName()+" —— ");//
if (account.getBalance() < 2000) {
System.out.println(Thread.currentThread().getName()
+ " , , ");
} else {
System.out.println(Thread.currentThread().getName()+" , "+account.getBalance());
System.out.println(Thread.currentThread().getName()
+ " 2000");
try {
System.out.println(Thread.currentThread().getName()
+ " ");
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName() + " ");
account.withdraw(2000);
System.out.println(Thread.currentThread().getName() + " ");
System.out.println(" " + account.getBalance() + " ");
}
System.out.println(Thread.currentThread().getName()+" —— ");
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.