Java 5.0 多线程编程实践


 ServiceThread(Socket socket) {
  connectedSocket = socket;
 }

 public void run() {
  increaseCount();
  int curCount = getCount();
  helloString = "hello, id = " + curCount + " ";

  ExecutorService executor = Executors.newSingleThreadExecutor();
  Futurefuture = executor.submit(new TimeConsumingTask());

  DataOutputStream dos = null;
  try {
   dos = new DataOutputStream(connectedSocket.getOutputStream());
   dos.write(helloString.getBytes());
   try {
    dos.write("let’s do soemthing other. ".getBytes());
    String result = future.get();
    dos.write(result.getBytes());
} catch (InterruptedException e) {
    e.printStackTrace();
   } catch (ExecutionException e) {
    e.printStackTrace();
   }
  } catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  } finally {
   if (null != connectedSocket) {
    try {
     connectedSocket.close();
    } catch (IOException e) {
     // TODO Auto-generated catch block
     e.printStackTrace();
    }
   }
   if (null != dos) {
    try {
     dos.close();
    } catch (IOException e) {
     // TODO Auto-generated catch block
     e.printStackTrace();
    }
   }
   executor.shutdown();
  }
 }

 private int getCount() {
  int ret = 0;
  try {
   lock.lock();
   ret = count;
  } finally {
   lock.unlock();
  }
  return ret;
 }

 private void increaseCount() {
  try {
   lock.lock();
   ++count;
  } finally {
   lock.unlock();
  }
 }
}

class TimeConsumingTask implements Callable{
 public String call() throws Exception {
  System.out.println("It’s a time-consuming task, you’d better retrieve your result in the furture");
  return "ok, here’s the result: It takes me lots of time to produce this result";
 }

}

共3页 首页 上一页 [1] [2] [3下一页 尾页>
字母检索 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z