📄 testlinkedlist.java
字号:
package apibook.c2.s1;import java.util.*;public class TestLinkedList { public TestLinkedList() { } public static void main(String[] args) { //创建一个链表对象 LinkedList l1 = new LinkedList(); //启动生产者线程 new producer(l1).start(); //启动消费者线程 new consumer(l1).start(); new consumer(l1).start(); }}class consumer extends Thread{//消费者线程 LinkedList list; consumer(LinkedList l){ list= l; } public void run(){ try { while (true) { //对该链表进行同步 synchronized(list){ //链表为空,线程等待 while (list.isEmpty()) { list.wait(); } //消费链表中的第一个数 System.out.println(this+":"+list.removeFirst()); } } } catch (Exception ex) { ex.printStackTrace(); } }}class producer extends Thread{//生产者线程 Random r = new Random(); LinkedList list; producer(LinkedList l){ list=l; } public void run(){ int count=0; try { while (true) { //线程睡眠随机长度的时间 Thread.sleep(r.nextInt(2002)); //对链表进行同步 synchronized(list){ //将产生的数加入链表中 list.addLast(new Integer(count++)); //唤醒消费者线程 list.notify(); } } } catch (Exception ex) { ex.printStackTrace(); } }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -