일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
- 배열
- StringBuilder
- Java
- class
- JS
- Swing
- 메소드
- thread
- GIT
- 파이썬
- 스프링부트
- 자바
- 객체
- docker
- JavaScript
- Python
- 자바스크립트
- 저장소
- SpringBoot
- c#
- AssertJ
- array
- event
- 클래스
- 프로그래머스스쿨
- join()
- Docker Desktop
- Dict
- SSL
- synchronized
- Today
- Total
목록프로그래밍 (89)
정리노트

package q8;class Seat { static int usable = 10; synchronized void print(String name, int n) { System.out.println(name + " 접속\n가능한 좌석수: " + usable + " / 요청 좌석 수: " + n); if (usable >= n && usable > 0) { System.out.println("좌석 수: " + n + ", 예약완료"); usable -= n; } else { System.out.println("좌석 예약이 불가합니다."); } System.out.println(name + " 접속해제\n"); }}class People1 extends Thread { Seat sea..

이어달리기 package q7; import javax.swing.*; import java.io.*; public class Q7 extends JFrame{ class MyThread extends Thread { JLabel label; int x, y, end; MyThread(String name, int xn, int yn) { x = xn; y = yn; end = x+500; label = new JLabel(); label.setIcon(new ImageIcon(name)); label.setBounds(x, y, 100, 100); add(label); } public void run() { while (x+100 < end) { x += 10; label.setBounds(x, y, ..

0부터 99가 담긴 List의 값을 두 개의 스레드로 0~49 / 50~99 의 합을 구한다. 동작은 겹치지 않도록 join()을 사용하도록 한다. package q5; import java.util.ArrayList; public class Q5 extends Thread { ArrayList list; static int index = 0; static int sum = 0; Q5(ArrayList lst) { list = lst; } public void run() { for (int i = 0; i < 50; i++) { sum += list.get(index); index++; } System.out.println(getName()+ " 종료, 현재 index: " + index); System..

package q4; import java.awt.*; import javax.swing.*; import java.io.*; public class Q4 extends JFrame { int x, y, width, height; Q4() { setSize(500, 300); x = 50; y = 50; width = 400; height = 200; MyPanel p = new MyPanel(); add(p); Thread t = new Thread(p); t.start(); setVisible(true); setDefaultCloseOperation(EXIT_ON_CLOSE); } public class MyPanel extends JPanel implements Runnable{ public voi..

package q3; import java.awt.*; import javax.swing.*; public class Q3 extends JFrame { class MyThread extends Thread { private JLabel label; int x, y; MyThread(String file, int x, int y) { this.x = x; this.y = y; label = new JLabel(); label.setIcon(new ImageIcon(file)); label.setBounds(x, y, 100, 100); add(label); } public void run() { while (x

Calendar 사용 1초마다 시간을 불러와서 label 변경 package q2; import javax.swing.*; import java.awt.*; import java.util.Calendar; public class Q2 extends JFrame { JLabel label; class MyThread extends Thread { public MyThread() { label = new JLabel("aaa"); label.setFont(new Font("Serif", Font.BOLD, 50)); label.setBounds(100, 50, 400, 50); add(label); } public void run() { for (;;) { try { Calendar now = Calenda..

생산자는 데이터를 생산하고 소비자는 데이터를 소비하도록 동작을 조정한다. 두 thread는 공유된 객체를 사용하는데 생산을 하지 않았는데 소비를 하려고 하거나 소비를 하지 않았는데 생산을 하려고 시도하면 안된다. 그래서 소비가 되었는지, 생산이 되었는지를 확인하기 위해 각 thread가 계속 동작상태가 된다면 엄청난 CPU낭비가 된다. 따라서, 동작을 잠시 멈추는 wait() 과 동작하도록 깨우는 notifyAll()을 사용한다. package producerConsumerTest; class Buffer { private int data; private boolean empty = true; public synchronized int get() { while(empty) { try { wait(); }..