此系列文章是学习完《Java并发编程实战》这本书后,将所有的知识点精简,并总结。结合书中原话将概念解释的通俗易懂。
希望能够在今后使用的时候查看,更快捷的理解和查阅,也可用于面试时应对各种各样的线程于并发问题。
1.1 线程
资源利用率:在用户输入操作时,线程进入堵塞状态,如果在等待状态同时可以运行另一个程序,那么就可以提高资源利用率。
公平性:不同用户和程序对计算机上的资源有着公平的使用权。
便利性:在计算机中,应该存在多个应用程序,每个程序在执行一个任务并在必要时通信,而不是所有都有一个程序来完成。
1.2 线程的优势
线程可以有效的降低程序的开发和维护的成本。这句话的理解主要是线程可以有效对CPU的利用率。
在GUI(Graphic User Interface 图形用户界面)应用程序,线程可以提高页面的响应速度,提高资源利用率和吞吐率。
1.3 线程带来的风险
因为线程的同步性会出现很多意料之外的结果。
这里举例了对一个共享变量value++的操作。这个操作在实际操作中分三步:读取value,将value+1,将计算结果写入。
public class UnsafeSequence{
private int value;
public int getNext(){
return value++;
}
}
在计算机中同步的操作有可能在毫厘之间,所以有可能会出现错误的结果。
1.4 线程无处不在
最后介绍了Java中JVM的垃圾回收、终结操作等使用线程。
Servlet和JSP,Servlet满足被多个线程调用,Servlet实现了线程安全。
RMI (Remote Method Invocation)远程方法调用。通过RMI调用远程方法时,传递的方法参数打包成字节流,通过网络传输给JVM,然后由远程JVM拆包并传递给远程方法。远程对象的线程安全问题:正确协同在多个对象中共享的状态,以及对远程对象本身状态的访问。