操作系统是平台,可提供软件运行的环境,在系统上运行的软件是一个一个的进程,考虑到安全问题他们之间不能共享数据,所以是进程。线程包含在进程中,他们之间可以共享数据,
java语言有自己的运行环境它就是jre,JRE是JVM(java虚拟机)和JDK(java开发工具包)组成,jvm又有编译器和解释器组成,编译器使.java类型的文件转换成.class类型的文件,再有解释器将.class文件由JDK中一段可以将.class文件转换成系统可以识别的字节码,然后系统在将字节码转换成计算机认识的二进制码。
虚拟机自带的几种机制:
1、垃圾回收机制, java虚拟机自带应用程序管理内存,
system.gc()方法的作用只是唤醒垃圾回收机制,垃圾回收原理就是标记交换区收集算法,(在栈中自上而下的进行两次搜索,第一次如果有长时间不用或者以前用过的对象现在为空的就做上标记,在第二次搜索时,如果仍然是长时间不使用,或为空,就立即清理掉释放资源)在执行gc()方法后不能立即处理垃圾,他也是一个线程,而且级别是最低的,要等到抢占到CPU资源后再进行清理,真正清理垃圾的方法是finalize()方法,回收垃圾不是程序员做的,如果想清理当前对象,可以先置空,在调用System.gc()方法,最后This.finalize()方法
2、异常处理机制,lang包中throwable类的直接子类有两个,一个是exception,一个是error,exception又分为两种一个是运行期异常,一个是检查期异常,检查型异常是有编译器直接捕获,运行期异常是由解释器捕获的异常,
如果方法中出现异常不能解决就抛出,用throw 异常对象,调用方法时如果还是不能解决该异常就抛弃异常,第二次是throws,写在类名后面。
3、多线程
线程包含三种状态:
1、创建状态,由start()方法唤醒这个线程,使线程处于线程队列中
2、运行状态,当此线程抢占到CPU资源时,就会回调其中的run()方法
3、阻塞状态,阻塞状态可以有两个方法实现wait()线程将不在线程队列中知道有notify(),或者是notify()方法唤醒,
sleep()线程
还在线程队列中等待着,到指定时间到达就又会去抢占CPU资源
线程销毁:1、isAlive()判断线程是否还活着
2、yield()销毁