关于网宿厦门研发中心笔试的一道PV操作题:利用java中的多线程实现生产者与消费者的同步问题
2012-10-12 22:17
961 查看
票据为同步资源:每一时刻资源池中仅存在一张可供使用的票据
public class Ticket { private int ticket=-1; synchronized public void setTicket(int ticket)//生产票据 { if(this.ticket!=-1) try { wait(); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } this.ticket=ticket; System.out.println("生产产品"+this.getClass().getName()+this.ticket); notify(); } synchronized public void getTicket()//消费票据 { if(this.ticket==-1) try { wait(); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } System.out.println("消费产品"+this.getClass().getName()+this.ticket); this.ticket=-1; notify(); } }
生产者类通过调用同步资源的生产函数来实现产生票据
public class Product implements Runnable { public Ticket ticket; public Product(Ticket ticket) { this.ticket=ticket; } public void run() { // TODO Auto-generated method stub for(int i=0;i<10;i++) { ticket.setTicket(i); } } }消费者同样通过调用同步资源中的set函数来重新设置资源池
public class Consumer implements Runnable { public Ticket ticket; public Consumer(Ticket ticket) { this.ticket=ticket; } public void run() { // TODO Auto-generated method stub for(int i=0;i<10;i++) { ticket.getTicket(); } } }
测试类
public class ThreadTest { public static void main(String[] args) { Ticket ticket=new Ticket(); Product pro=new Product(ticket); Consumer con=new Consumer(ticket); Thread thread1=new Thread(pro); Thread thread2=new Thread(con); thread1.start(); thread2.start(); } }
相关文章推荐
- java利用lock和unlock实现消费者与生产者问题(多线程)
- Java 多线程实现生产者消费者问题(wait/notify)
- 课程设计——利用信号量实现生产者-消费者问题(java)
- java多线程实现生产者与消费者问题
- java多线程实现生产者/消费者同步
- java多线程,这样的生产者消费者实现会有什么问题呢?
- 多线程经典案例——生产者/消费者问题的Java实现与详解
- 利用条件变量实现多线程生产者消费者问题
- Java多线程15:Queue、BlockingQueue以及利用BlockingQueue实现生产者/消费者模型
- 多线程下生产者消费者问题的五种同步方法实现
- java多线程总结六:经典生产者消费者问题实现
- Java多线程15:Queue、BlockingQueue以及利用BlockingQueue实现生产者/消费者模型
- Java多线程 多个生产者和多个消费者实现同步 jdk1.5
- Java Note: 多线程的同步(互斥锁)的方法对比,信号量锁,读写锁的实现,生产者-消费者模式的实现
- 【java 多线程】多线程并发同步问题及生产者、消费者问题
- 生产者与消费者问题(java多线程实现)
- Java Note: 多线程的同步(互斥锁)的方法对比,信号量锁,读写锁的实现,生产者-消费者模式的实现
- 用JAVA实现多线程(生产者与消费者问题)
- java使用多线程实现生产者消费者问题
- Java Note: 多线程的同步(互斥锁)的方法对比,信号量锁,读写锁的实现,生产者-消费者模式的实现