精华帖 (2) :: 良好帖 (0) :: 隐藏帖 (2)
|
|
---|---|
作者 | 正文 |
发表时间:2011-05-25
leibos太装了,大牛都不是装的。牛不仅要牛技术,要有牛德啊,别瞧不起菜鸟,说不定哪天还是人家给你发工资呢
|
|
返回顶楼 | |
发表时间:2011-05-25
请楼主说明到底是进程,还是线程哈。
|
|
返回顶楼 | |
发表时间:2011-05-25
oq_zhang 写道 请楼主说明到底是进程,还是线程哈。
是进程,当时我还正懵了,不过这个应该是他们项目中遇到的问题 对本次的面试感觉还是蛮惭愧的 |
|
返回顶楼 | |
发表时间:2011-05-25
第一个用读写锁ReentrantReadWriteLock保护文件,读文件先readLock(),写文件先writeLock() |
|
返回顶楼 | |
发表时间:2011-05-25
weilJava 写道
oq_zhang 写道
请楼主说明到底是进程,还是线程哈。
是进程,当时我还正懵了,不过这个应该是他们项目中遇到的问题 对本次的面试感觉还是蛮惭愧的
是进程的话,能不能先写个第三方文件作为同步。A和B进程在读写同一文件之前,先在第三方文件中查询自己的状态,开始读写后再把自己的状态写进去,读写完了还要改(这种方法也是个悖论,读写第三方文件还需要考虑同步)。能不能借助其它第三方的同步,比如数据库锁,读写的时候先去数据库里查询文件状态。 |
|
返回顶楼 | |
发表时间:2011-05-25
本是同根生,相煎何太急。
大牛鄙视菜鸟是不对的。 |
|
返回顶楼 | |
发表时间:2011-05-25
locked 写道 多进程读写文件:一个进程A写文件file,另一个进程B读文件file
Doug Lea 在他的书中提供一个示例代码 ReadWrite 为抽象类,允许并发的读操作,不允许并发的写操作,也不允许读写同时进行。 可以扩展ReadWrite为SingleFileReadWrite 实现 doRead和doWrite方法来读写文件 线程A和线程B使用同一个SingleFileReadWrite 实例 SingleFileReadWrite rw; threadB rw.read(); threadA rw.write(); abstract class ReadWrite { protected int activeReaders = 0; // threads executing read protected int activeWriters = 0; // always zero or one protected int waitingReaders = 0; // threads not yet in read protected int waitingWriters = 0; // same for write protected abstract void doRead(); // implement in subclasses protected abstract void doWrite(); public void read() throws InterruptedException { beforeRead(); try { doRead(); } finally { afterRead(); } } public void write() throws InterruptedException { beforeWrite(); try { doWrite(); } finally { afterWrite(); } } protected boolean allowReader() { return waitingWriters == 0 && activeWriters == 0; } protected boolean allowWriter() { return activeReaders == 0 && activeWriters == 0; } protected synchronized void beforeRead() throws InterruptedException { ++waitingReaders; while (!allowReader()) { try { wait(); } catch (InterruptedException ie) { --waitingReaders; // roll back state throw ie; } } --waitingReaders; ++activeReaders; } protected synchronized void afterRead() { --activeReaders; notifyAll(); } protected synchronized void beforeWrite() throws InterruptedException { ++waitingWriters; while (!allowWriter()) { try { wait(); } catch (InterruptedException ie) { --waitingWriters; throw ie; } } --waitingWriters; ++activeWriters; } protected synchronized void afterWrite() { --activeWriters; notifyAll(); } } 他们说的应该是进程,不是线程 |
|
返回顶楼 | |
发表时间:2011-05-25
3.操作系统分XP和 windows7 ,linux ;windows7又分32位和64位系统
4. 栈(stack):Last in first out 队列(queue):First in first out 我是刚学,也就知道这些 |
|
返回顶楼 | |
发表时间:2011-05-25
题不难....
可能大牛不愿意说太细致.不过基本上也都答到点子了 |
|
返回顶楼 | |
发表时间:2011-05-25
no matter list particular too more.
just point out the key. about the rest, do it youself. |
|
返回顶楼 | |