`
wwn15wwn
  • 浏览: 15982 次
最近访客 更多访客>>
社区版块
存档分类
最新评论

java的面试socket

 
阅读更多

java的面试socket
2010年05月17日
  如果数据将在线程间共享.例如正在写的数据以后可能被另一个线程读到,或者正在读的数据可能已经被另一个线程写过了,那么这些数据就是共享数据,必须进行同步存取.     当应用程序在对象上调用了一个需要花费很长时间来执行的方法,并且不希望让程序等待方法的返回时,就应该使用异步编程,在很多情况下采用异步途径往往更有效率.
  Java同步:
  基本概念:
  每个Object都会有1个锁.
  同步就是串行使用一些资源.
  (说明:以下有些例子为了突出重点,省略了不必要的代码.非凡是省掉了一些成员变量,就是需要同步的对象.)
  1. 多线程中对共享、可变的数据进行同步.
  对于函数中的局部变量没必要进行同步.
  对于不可变数据,也没必要进行同步.
  多线程中访问共享可变数据才有必要.
  2. 单个线程中可以使用synchronized,而且可以嵌套,但无意义.
  class Test {
  public static void main(String[] args) {
  Test t = new Test();
  synchronized(t) {
  synchronized(t) {
  System.out.println("ok!");
  }
  }
  }
  }
  3. 对象实例的锁
  class Test{
  public synchronized void f1(){
  //do something here
  }
  public void f2(){
  synchronized(this){
  //do something here
  }
  }
  }
  上面的f1()和f2()效果一致, synchronized取得的锁都是Test某个实列(this)的锁.
  比如: Test t = new Test();
  线程A调用t.f2()时, 线程B无法进入t.f1(),直到t.f2()结束.
  作用: 多线程中访问Test的同一个实例的同步方法时会进行同步.
  4. class的锁
  class Test{
  final static Object o= new Object();
  public static synchronized void f1(){
  //do something here
  }
  public static void f2(){
  synchronized(Test.class){
  //do something here
  }
  }
  public static void f3(){
  try {
  synchronized (Class.forName("Test")) {
  //do something here
  }
  }
  catch (ClassNotFoundException ex) {
  }
  }
  public static void g(){
  synchronized(o){
  //do something here
  }
  }
  }
  上面f1(),f2(),f3(),g()效果一致
  f1(),f2(),f3()中synchronized取得的锁都是Test.class的锁.
  g()是自己产生一个对象o,利用o的锁做同步
  作用: 多线程中访问此类或此类任一个实例的同步方法时都会同步. singleton模式lazily initializing属于此类.
  5. static method
  class Test{
  private static int v = 0;
  public static void f1(){
  //do something, 但函数中没用用到v
  }
  public synchronized static void f2(){
  //do something, 函数中对v进行了读/写.
  }
  }
  多线程中使用Test的某个实列时,
  (1) f1()是线程安全的,不需要同步
  (2) f2()这个静态方法中使用了函数外静态变量,所以需要同步.
  Java异步:
  一.    它要能适应不同类型的请求:
  本节用 makeString来说明要求有返回值的请求.用displayString来说明不需要返回值的请求.
  二.    要能同时并发处理多个请求,并能按一定机制调度:
  本节将用一个队列来存放请求,所以只能按FIFO机制调度,你可以改用LinkedList,就可以简单实现一个优先级(优先级高的addFirst,低的addLast).
  三.    有能力将调用的边界从线程扩展到机器间(RMI)
  四.    分离过度耦合,如分离调用句柄(取货凭证)和真实数据的实现.分离调用和执行的过程,可以尽快地将调返回.
  现在看具体的实现:
  public interface Axman {
  Result resultTest(int count,char c);
  void noResultTest(String str);
  }
  这个接口有两个方法要实现,就是有返回值的调用resultTest和不需要返回值的调用
  noResultTest, 我们把这个接口用一个代理类来实现,目的是将方法调用转化为对象,这样就可以将多个请求(多个方法调)放到一个容器中缓存起来,然后统一处理,因为 Java不支持方法指针,所以把方法调用转换为对象,然后在这个对象上统一执行它们的方法,不仅可以做到异步处理,而且可以将代表方法调用的请求对象序列化后通过网络传递到另一个机器上执行(RMI).这也是Java回调机制最有力的实现.
  一个简单的例子.
  如果 1: 做A
  如果 2: 做B
  如果 3: 做C
  如果有1000个情况,你不至于用1000个case吧?以后再增加呢?
  所以如果C/C++程序员,会这样实现: (c和c++定义结构不同)
  type define struct MyStruct{
  int mark;
  (*fn) ();
  } MyList;
  然后你可以声明这个结构数据:
  {1,A,
  2,B
  3,C
  }
  做一个循环:
  for(i=0;i一个方法保存,除了直接调用,所以将要调用的方法用子类来实现,然后把这些子类实例保存起来,然后在这些子类的实现上调用方法:
  interface My{
  void test();
  }
分享到:
评论

相关推荐

    Java面试之Socket编程

    Java网络编程的问题.在java中如何进行socket编程。

    Java面试题资料合集-44套.rar

    java面试-TCP,UDP,Socket,Http网络编程面试题 47道 java面试-Tomcat面试题 14道 java面试-Zookeeper面试题 20道 java面试-大数据面试题 100道 java面试-多线程面试59题(含答案) java面试-设计模式面试题 14道

    2023最新JAVA面试题集

    最新JAVA面试题总结之基础/框架/数据库/JavaWeb/Redis BIO,NIO,AIO,Netty面试题 35道 BTA 常问的 Java基础39道常见面试题及详细答案 Dubbo面试题 47道 ElasticSearch面试题 30道 Git常用命令面试题 60道 Java并发...

    Java面试题资源合集

    土豪可直接下载,建议搜索微信公众号【致架构师】,回复面试题,可免费下载Java面试题资源合集,涵盖Java各项核心技术面试资料,包括BIO,NIO,AIO,Netty,Dubbo,ElasticSearch,Git,Java虚拟机(JVM),异常,...

    java程序员必备的面试宝典秘籍.pdf

    面试题集共分为以下十部分: 一、Core Java: 1 — 95 题 1 — 24 页 基础及语法: 1 — 61 题 1 — 13 页 异常: 62 — 69 题 13 — 15 页 集合: 70 — 80 题 15 — 18 页 线程: 81 — 90 题 18 — 21 页 IO & ...

    JAVA面试题最全集

    使用socket建立客户端与服务器的通信的过程 60.JAVA语言国际化应用,Locale类,Unicode 61.描述反射机制的作用 62.如何读写一个文件? 63.在图形界面中,一个按钮如何处理鼠标点击事件? 64.在图形界面中,一个...

    JAVA面试经典整合

    13.Socket 14.SQL 15.代码可读性 16.代码风格规范 17.分布式 18.剑指 offer 题解 19.攻击技术 20.数据库系统原理 21.正则表达式 22.消息队列 23.算法 24.系统设计基础 25.缓存 26.计算机操作系统 27.计算机网络 28....

    java Socket面试

    对于java面试时,会问很多方面的知识,附件是关于java Socket编程部分的问题,希望对有需要的人有帮助。

    JAVA面试题整理.pdf

    一、 Core Java : 基础及语法: 异常: 集合: 线程: IO & Socket : 二、 OOAD & UML : 三、 XML : 四、 SQL : 五、 JDBC & Hibernate : 六、 Web : 七 、 EJB & Spring : 八、数据结构 & 算法 & 计算机...

    Java后端面试手册-Java基础知识

    Java后端面试手册 生成资源简介 Java后端面试手册是一本针对Java后端开发岗位的面试准备指南,旨在帮助求职者更好地准备和应对Java后端面试。该手册通常包含以下内容: ...Java面试手册.pdf 算法小抄官方完整版.pdf

    2024年java面试题-网络编程TCP、UDP、Socket、Http等面试题

    网络编程的本质是多台计算机之间的数据交换。数据传递本身没有多大的...本资料是关于Java网络方面的面试题,包含TCP、UDP、HTTP、Socket等相关的资料,还是很不错的,里面有八股文,有图文讲解,还是有得借鉴的!!!

    java面试笔试资料包括JAVA基础核心知识点深度学习Spring面试题等资料合集.zip

    Java面试高级篇—说说TCP,UDP和socket,Http之间联系和区别.doc MySQL千万级的大表要怎么优化(读写分离、水平拆分、垂直拆分).doc redis缓存雪崩、缓存穿透、缓存预热、缓存更新、缓存降级.doc RPC (Remote ...

    java面试题(题库全)

    一、Core Java: 1.基础及语法 2.异常 3.集合 4.线程 5.IO & Socket 二、OOAD & UML 三、XML 四、SQL 五、JDBC & Hibernate 六、Web 七、EJB & Spring 八、数据结构 & 算法 & 计算机基础 九、C++ 十、Weblogic 及 ...

    Java面试题库

    面试题集共分为以下十部分: 一、Core Java: 1 — 95 题1 — 24 页 基础及语法: 1 — 61 题1 — 13 页 异常: 62 — 69 题13 — 15 页 集合: 70 — 80 题15 — 18 页 线程: 81 — 90 题18 — 21 页 IO & Socket...

    java面试题

    Java 软件工程师面试资料大整合 1 Java 面霸 1 1. int 和 Integer 有什么区别? 8 2. String 和StringBuffer的区别 8 3. 运行时异常与一般异常有何异同? 8 4. 说出ArrayList,Vector,LinkedList的存储性能和特性 8 5...

    Java面试题大全

    Java面试题大全,涵盖了各个方面, 一、Core Java: 1 — 95 题1 — 24 页 基础及语法: 1 — 61 题1 — 13 页 异常: 62 — 69 题13 — 15 页 集合: 70 — 80 题15 — 18 页 线程: 81 — 90 题18 — 21 页 IO & ...

    java面试题宝典

    面试题集共分为以下十部分: 一、Core Java: 1 — 95 题1 — 24 页 基础及语法: 1 — 61 题1 — 13 页 异常: 62 — 69 题13 — 15 页 集合: 70 — 80 题15 — 18 页 线程: 81 — 90 题18 — 21 页 IO & Socket...

    java软件工程师面试题大全

    java软件工程师面试试题集-弄懂面试基本不成问题, 面试题集共分为以下十部分: 一、Core Java: 1 — 95 题1 — 24 页 基础及语法: 1 — 61 题1 — 13 页 异常: 62 — 69 题13 — 15 页 集合: 70 — 80 题15 — ...

    websocket + java socket 聊天吗平台

    该项目是一个基于WebSocket和Java Socket的交互型BS平台,提供聊天、直播、模拟面试和弹幕互动功能。用户可以进行点对点聊天、群聊、观看直播,并参与弹幕互动。还可以利用模拟面试功能进行面试模拟,并参与对主播...

    java面试题集锦.pdf

    java面试题集锦.pdf 、 Core Java : 基础及语法: 异常: 集合: 线程: IO & Socket : 、 OOAD & UML : 、 XML : 、 SQL : 、 JDBC & Hibernate : 、 Web : 、 EJB & Spring : 、数据结构 & 算法 & 计算机...

Global site tag (gtag.js) - Google Analytics