信号和线程
万事皆有因 随着公司的业务不断扩大,我们在2013年底开始逐步的进入Java体系的阶段,不过谁都没有Java的经验,我们就决定自己动手丰衣足食的策略,学习,请教和顾问。经过2014年的一年的努力,成功的组建了一个Java团队,并尝试做了一些新业务和基础性组件。虽然比较顺利,但还是在我心中留下了许多疑问,例如说JVM的安全点和安全区,正好上周出差回来得到了一段时间的放松,又开始阅读了下JVM中的代码。 那么收获有什么呢? 纠正了自己以前一个错误的认识,VMThread的是JVM用来完成JVM内的事情的线程,并非执行OpCode的线程,而这正执行OpCode的线程是JavaThread。 发现了JVM进入安全区的一些原理,该原理和Linux的信号以及线程是有非常大的关系的。 Linux的线程 在Linux的上古时代,Linux的线程技术和POSIX的标准是不同的,它使用自己的LinuxThread库。这会为我们带来什么影响呢? 首先,我们说下POSIX是如何定义多线程的,POSIX下一个多线程的进程只有一个PID。从这个定义中,大家可能已经猜出LinuxThread的实现有什么不同了,对,就是LinuxThread下每个线程都有一个PID,每个线程在系统中的表现就如同进程一般。 其次,现代的Linux的线程已经完全符合POSIX的标准了。 总结就是,我们可以忽略这件事情(不要丢鸡蛋)。