main(){
ThreadCount threadCount = new ThreadCount();
threadCount.start();
String input = JOptionPane.showInputDialog("아무 값이나 입력하세요.");
System.out.println("입력하신 값은 " + input + "입니다.");
}
=============================================
10 9 8 7 6 ... 이 1초마다 실행 되도록 쓰레드를 완성하시오.
import javax.swing.JOptionPane;
public class ThreadEx7 {
public static void main(String[] args) {
System.out.println(Thread.currentThread().getName());
Thread th = new Thread(new ThreadEx7_1());
th.start();
String input = JOptionPane.showInputDialog("아무 값이나 입력하세요.");
System.out.println("입력하신 값은 " + input + "입니다.");
}
}
class ThreadEx7_1 implements Runnable{
public void run() {
System.out.println(Thread.currentThread().getName());
for (int i = 10; i > 0; i--) {
System.out.println(i);
try { Thread.sleep(1000); } catch (Exception e) {}
}
} // run()
}
=================
대상 파일: a.java
사본 이름: x:\b.java
파일 복사가 되었습니다.
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Scanner;
public class ByteFileCopier {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("대상 파일 : ");
String src = sc.nextLine();
System.out.print("사본 이름 : ");
String dst = sc.nextLine();
try(InputStream in = new FileInputStream(src);
OutputStream out = new FileOutputStream(dst)) {
int data;
while(true) {
data = in.read();
if(data == -1)
break;
out.write(data);
}
}
catch(IOException e) {
e.printStackTrace();
}
System.out.println("파일 복사가 되었습니다.");
}
}
출처 : https://hianna.tistory.com/546
class Account {
private int balance = 1000;
public int getBalance() {
return balance;
}
public void withdraw(int money) throws InterruptedException{
if(balance >= money) {
//try {
Thread.sleep(1000);
//} catch(InterruptedException e) {}
balance -= money;
}
} // withdraw
}
class RunnableEx21 implements Runnable {
Account acc = new Account();
public void run() {
while(acc.getBalance() > 0) {
// 100, 200, 300중의 한 값을 임으로 선택해서 출금(withdraw)
int money = (int)(Math.random() * 3 + 1) * 100;
try {
acc.withdraw(money);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("balance:"+acc.getBalance());
}
} // run()
}
class ThreadEx21 {
public static void main(String args[]) {
Runnable r = new RunnableEx21();
new Thread(r).start();
new Thread(r).start();
}
}
public void withdraw(int money) throws InterruptedException{
if(balance >= money) {
//try {
Thread.sleep(1000);
//} catch(InterruptedException e) {}
balance -= money;
}
} // withdraw
}
이 부분에서 Thread.sleep(1000)때문에 딜레이가 생겨서 이미 돈이 빠져나갔는데 한번 더 빠져나가서 -값이 출력된다. 라고 옆자리 쿠마상이 설명해주셨습니다. 난 글러먹었어.