JAVA 멀티스레드 생산자 소비자 모델 실현
14408 단어 생산자 소비자
책 POJO
1 package thread;
2
3 public class Book {
4 private Integer bookId;
5 private String bookName;
6
7 public Integer getBookId() {
8 return bookId;
9 }
10
11 public void setBookId(Integer bookId) {
12 this.bookId = bookId;
13 }
14
15 public String getBookName() {
16 return bookName;
17 }
18
19 public void setBookName(String bookName) {
20 this.bookName = bookName;
21 }
22 }
파충선
1 package thread;
2
3 import java.util.List;
4 import java.util.Queue;
5
6 public class CrawlerThread extends Thread {
7 private List<Integer> bookIdList; // Id
8 private Queue<Book> bookQueue; //
9
10 public CrawlerThread(List<Integer> bookIdList, Queue<Book> bookQueue) {
11 this.bookIdList = bookIdList;
12 this.bookQueue = bookQueue;
13 }
14
15 public void run() {
16 for(int i = 0; i < bookIdList.size(); i++) {
17 Book book = new Book(); //
18 book.setBookId(bookIdList.get(i));
19 book.setBookName(" " + book.getBookId());
20
21 try {
22 sleep((long) (Math.random() * 1000 * 1000)); // sleep 100 - 1000 ,
23 } catch (InterruptedException e) {
24 e.printStackTrace();
25 }
26
27 bookQueue.offer(book); //
28 }
29 }
30 }
스레드 삽입
1 package thread;
2
3 import java.util.Queue;
4
5 public class InsertThread extends Thread {
6 private Queue<Book> bookQueue; //
7
8 public InsertThread(Queue<Book> bookQueue) {
9 this.bookQueue = bookQueue;
10 }
11
12 public void run() {
13 int timer = 0; //
14
15 while(timer < 30) { // 30 bookQueue , ,
16 if(bookQueue.size() != 0) { //
17 Book book;
18 while((book = bookQueue.poll()) != null) {
19 System.out.println(book.getBookName()); //
20 }
21 timer = 0; //
22 } else {
23 try {
24 sleep(60 * 1000); //
25 } catch (InterruptedException e) {
26 e.printStackTrace();
27 }
28 timer++; //timer +1
29 }
30 }
31 }
32 }
주 프로그램
1 package thread;
2
3 import java.util.ArrayList;
4 import java.util.List;
5 import java.util.Queue;
6 import java.util.concurrent.ConcurrentLinkedQueue;
7
8 public class Start {
9 public void main(String[] args) {
10 Queue<Book> bookQueue = new ConcurrentLinkedQueue<Book>(); //
11
12 // Id
13 List<Integer> bookIdList = new ArrayList<Integer>();
14 bookIdList.add(1);
15 bookIdList.add(2);
16 bookIdList.add(3);
17 bookIdList.add(4);
18 bookIdList.add(5);
19
20 CrawlerThread ct = new CrawlerThread(bookIdList, bookQueue); // Id , , , ..- -
21 InsertThread it = new InsertThread(bookQueue); //
22
23 ct.start();
24 it.start();
25 }
26 }
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
JAVA 멀티스레드 생산자 소비자 모델 실현문제 배경: 파충류가 되어 인터넷에서 책을 기어오르고 기어내린 후 데이터베이스에 삽입 문제 설계: 여러 라인으로 동시에 인터넷에서 책을 기어오르고 기어오르는 책은 한 라인을 삽입한다. 이런 라인은 같은 책 대기열을 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.