找工作练手--一道腾讯的笔试题
来源:互联网 发布:公务员考试网络课程 编辑:程序博客网 时间:2024/05/16 17:24
今日,在网上搜到一篇讲述在腾讯面经。里面有道题,考的是生产者消费者问题。题目如下:
模拟线程间通信:线程A和B共用一块空间C[] space, 模拟一次线程间的通信:线程A生产一个C物品,并把它放入space中,线程B从space中取出该物品,并输出它的信息。
题目很简单,解题思路:
1.把题目中提到的对象变成程序里的对象,比如JAVA对象。这样需要两个线程,一个消费者线程,一个生产者线程,一个资源对象。
2.定义几个对象之间的操作。消费者线程是从资源对象中取得资源,所以此线程中只要获得资源的对象,便可调用对象方法;生产者线程也一样。
总体意思就是两个线程只负责生产和获取,至于如何获取,则由资源对象本身去协调。
JAVA代码程序如下:
public class ProduceAndComsumer {/** * @param args */public static void main(String[] args) {// TODO Auto-generated method stubResource r = new Resource();new Thread(new TheadProducer(r)).start();new Thread(new ThreadComsumer(r)).start();}}class Resource{private Object[] object = new Object[10];private int i = 0;public synchronized void produce(){if(i == object.length){try {this.wait();} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}}object[i++] = new Object();System.out.println("生产第" + i + "资源");this.notify();}public synchronized void comsumer(){if(i == 0){try {this.wait();} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}}System.out.println("消费第" + i + "资源");object[--i] = null;this.notify();}}class TheadProducer implements Runnable{Resource resource;public TheadProducer(Resource r){this.resource = r;};@Overridepublic void run() {// TODO Auto-generated method stubfor(int i = 0; i < 1000; i++)resource.produce();}}class ThreadComsumer implements Runnable{Resource resource;public ThreadComsumer(Resource r){this.resource = r;};@Overridepublic void run() {// TODO Auto-generated method stubfor(int i = 0; i < 1000; i++)resource.comsumer();}}这是JAVA的实现,由此可以引伸出如何用C实现,在windows下肯定要用到windowsAPI了。对windowsAPI的使用不多,尤其对于线程通信的API,还没有详细研究,现在肯定是写不出来了,留待以后补上。。。
- 找工作练手--一道腾讯的笔试题
- 一道腾讯的笔试题
- 腾讯的一道笔试题
- 一道腾讯笔试题
- 一道腾讯笔试题的思路
- 从腾讯的一道笔试题说起
- 腾讯实习生的一道笔试题
- 一道腾讯笔试题--Integer的比较
- 腾讯2013的一道实习生笔试题
- 找工作练手--一道面试题
- 小菜练手~~~~一道公司笔试题
- 一道腾讯实习笔试题
- 受限的操作下迭代技巧之一道腾讯笔试题
- 2015腾讯在线笔试的一道编程题
- 一道腾讯多线程笔试题的问题和思考
- 一道爱立信改自腾讯笔试题
- 2012腾讯笔试题回忆一道
- 求解一道腾讯笔试题(帮帮忙)
- Java面向对象16种设计原则(总结版)
- HW: 做好PM的十二个关键事项
- 《如师通语言学习软件(罗塞塔石碑)》(Rosetta Stone) v3.4.5 英语/日语/法语/德语/韩语/俄语/西班牙语/意大利语/阿拉伯语/葡萄牙语/汉语 [云端免安装版]
- spring secutity3
- 关于Java文件路径问题
- 找工作练手--一道腾讯的笔试题
- Tip and Ring
- java实现B树(二叉树)插入,删除
- RFC3581——SIP中的rport机制(一)
- hibernate 抛出的object references an unsaved transient instance错误
- Subverion (SVN) through proxy
- 二叉树的递归和非递归遍历
- SNMP
- 详解Java中Cookie与Session的区别