1、多进程和多线程有什么区别

    网络编程中设计并发服务器时,使用多进程与多线程的区别?

    用多进程时每个进程都有自己的地址空间,线程则共享地址空间。(所有其他区别都是由此而来)

  • 速度:  线程产生的速度快,线程间的通信快、切换快,因为他们在同一个地址空间内。

  • 资源利用率:线程的资源利用率比较好也是因为他们在同一地址空间内。

  • 同步问题: 线程使用公共变量或内存是需要使用同步机制,还是因为他们在同一地址空间内。

    

2、进程和线程的区别

    进程是资源管理的最小单位,线程是程序执行的最小单位。在操作系统设计上,从进程演化出线程,最主要的目的就是更好的支持SMP(双CPU系统,实际上是对称多处理机系统中最常见的一种)以及减小(进程/线程)上下文切换开销。 

1.进程是程序的一次执行。线程可以理解为程序中的执行的一段程序片段。 

2.进程间是独立的,这表现在内存空间、上下文环境上;线程运行在进程空间内。

3.一般来讲,进程无法突破进程边界存取其他进程内的存储空间;而线程由于处于进程空间内,所以同一个进程所产生的线程共享同一内存空间。同一进程中的两段代码不能够同时执行,除非引入线程。

4.线程是属于进程的,当进程退出时该进程所产生的线程都会被强制退出并清除、线程占用资源要少于进程所占用的资源、进程和线程都可以有优先级。


3、final、finally、finalize的区别?

final:用于修饰属性、方法和类;修饰的属性不可变,修饰的方法不能被重写,修饰的类不能被继承;内部类要访问局部变量,局部变量必须定义成final类型;

finally:异常处理语句结构的一部分,总是被执行,比return,break后执行,如果前面出现了System.exit(0);则不执行;

finalize:是Object里的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,可以覆盖此方法提供垃圾收集时的其他资源回收,例如关闭文件等。JVM不保证此方法总被调用。


4、error和exception的区别?

Error(错误):表示系统级的错误和程序不必处理的异常,是java运行环境中的内部错误或者硬件问题。比如:内存资源不足、内存溢出、线程死锁等。对于这种错误,程序基本无能为力,除了退出运行外别无选择,它是由Java虚拟机抛出的。
    Exception(异常):表示需要捕捉或者需要程序进行处理的异常,它处理的是因为程序设计的瑕疵而引起的问题或者在外的输入等引起的一般性问题,是程序必须处理的。


5、用最有效的方法算出2*8等于多少?

因为位运算是CPU直接支持的,所以采用位运算效率最高;因为将一个数左移n位,相当于乘以了2n次方,所以是2*8最有效的方法是:2<<3