论坛首页 招聘求职论坛

OK,改个名字,只想知道第一题的详细答案,其他我也能说出一二,别鸡鸡爪爪的,没素质

浏览 36003 次
精华帖 (2) :: 良好帖 (0) :: 隐藏帖 (2)
作者 正文
   发表时间:2011-05-25  
leibos太装了,大牛都不是装的。牛不仅要牛技术,要有牛德啊,别瞧不起菜鸟,说不定哪天还是人家给你发工资呢
0 请登录后投票
   发表时间:2011-05-25  
请楼主说明到底是进程,还是线程哈。
0 请登录后投票
   发表时间:2011-05-25  
oq_zhang 写道
请楼主说明到底是进程,还是线程哈。

是进程,当时我还正懵了,不过这个应该是他们项目中遇到的问题

对本次的面试感觉还是蛮惭愧的
0 请登录后投票
   发表时间:2011-05-25  

第一个用读写锁ReentrantReadWriteLock保护文件,读文件先readLock(),写文件先writeLock()

0 请登录后投票
   发表时间:2011-05-25  
weilJava 写道
oq_zhang 写道
请楼主说明到底是进程,还是线程哈。

是进程,当时我还正懵了,不过这个应该是他们项目中遇到的问题

对本次的面试感觉还是蛮惭愧的

 

是进程的话,能不能先写个第三方文件作为同步。A和B进程在读写同一文件之前,先在第三方文件中查询自己的状态,开始读写后再把自己的状态写进去,读写完了还要改(这种方法也是个悖论,读写第三方文件还需要考虑同步)。能不能借助其它第三方的同步,比如数据库锁,读写的时候先去数据库里查询文件状态。

0 请登录后投票
   发表时间:2011-05-25  
本是同根生,相煎何太急。

大牛鄙视菜鸟是不对的。
0 请登录后投票
   发表时间: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();
  }
}




他们说的应该是进程,不是线程
0 请登录后投票
   发表时间:2011-05-25  
3.操作系统分XP和 windows7 ,linux ;windows7又分32位和64位系统
4. 栈(stack):Last in first out
   队列(queue):First in first out

我是刚学,也就知道这些
0 请登录后投票
   发表时间:2011-05-25  
题不难....

可能大牛不愿意说太细致.不过基本上也都答到点子了
0 请登录后投票
   发表时间:2011-05-25  
no matter list particular too more.
just point out the key.
about the rest, do it youself.
0 请登录后投票
论坛首页 招聘求职版

跳转论坛:
Global site tag (gtag.js) - Google Analytics