进程与线程的区别
进程是指正在运行的程序,几乎所有的操作系统都支持进程的概念,所有运行的任务通常对应一个进程,
当一个程序进入内存执行,即变成了一个进程,进程是处于运行中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位。
线程是进程的执行单元,一个进程可以拥有多个线程,多个线程之间共享进程所拥有的全部资源。
一个进程中的多个线程可以并发执行,线程的执行是抢占式的,线程的调度和管理由进程本身负责完成。
进程之间不能共享内存,但线程之间共享内存很容易,系统创建进程是需要为进程分配系统资源,但创建线程则代价小得多
java中创建线程的方式
通过继承Thread类
定义继承Thread类的子类,重写run()方法,run方法即为线程执行体
创建该子类的实例对象,即创建了线程对象
调用该对象的start()方法启动执行该线程
通过实行Runnable接口
定义实现Runnable接口的类,同样实现run()方法
创建该类的实例对象,以该对象作为Thread的target创建Thread实例对象,该Thread对象才是真正的线程对象
调用该Thread对象的start() 方法启动线程
使用callable接口和FutureTask类
创建Callbale接口的实现类,并且实现call()方法,并且该call方法有返回值
创建Callable的实例对象,并用FutureTask类来包装Callable对象,该FutureTask对象封装了callable对象的call方法的返回值
使用FutureTask对象作为Thread对象的target创建并启动线程
调用FutureTask对象的get方法来获得子线程执行结束后的返回值
线