jave进程与线程
在并发程序中,相对于进程,线程需要更少的资源(线程也被称为轻量级进程),并且存在于进程中,反过来进程中至少存在一个线程(主线程)。一个进程拥有独立的执行环境,通常拥有完整的,私有的基本运行时资源,每个进程都有自己的内存空间。一般情况下,进程通常做为应用程序的同义词,也就是往往将某个应用程序看做进程,而实际上一个运行的应用程序可能有多个互相协作的进程组成。大多数操作系统支持进程间通信(Inter Process Communication ,IPC),比如管道、套接字和内存共享等,IPC不仅支持系统中的进程通信也支持不同系统中的进程通信。
线程同样需要执行环境,不同于进程有独立的执行环境的是,线程共享所属进程的资源,包括内存和打开的文件,这能够使通信更加高效,但也存在潜在的问题。多线程是Java平台的基本特性,在Java中每个应用程序至少包含一个线程,从程序员的角度出发,程序从一个线程启动,该线程称为主线程,主线程负责创建其它线程。
Java中每个线程对应一个Thread对象,每个线程都拥有标识自己的名字,可以在创建Thread对象时指定名字,若没指定将会自动生成形如Thread-n的名字,n为整数。在Java中有两种方法创建线程,第一种方法是实现Runnable接口,该接口定义了唯一的方法run,在该方法中可以编写线程要执行的工作,当线程启动时将调用run方法。第二种方法是继承Thread类,Thread实现了Runnable接口,但run方法不做任何事情,所以子类需要提供自己的run方法实现以覆盖父类的方法。无论使用上述方法中的哪种创建线程,都需要调用Thread对象的start方法启动线程。这两种方法推荐使用第一种创建线程,因为第二种方法要求线程必须是Thread类的子类,而第一种方法则更为灵活。
Thread类提供了一些静态方法和非静态方法用于对线程操作和管理。其中静态方法作用于当前线程,非静态方法作用于调用该方法的线程对象上。下面介绍几个经常使用的方法,包括sleep、interrupted、jion,最后给出演示这些方法如何使用及实际执行情况的代码。
sleep()为静态方法,当执行Thread.sleep()时会是当前线程暂停指定的时间,这样其它线程或者进程可
原创文章,作者:wdmbts,如若转载,请注明出处:https://blog.ytso.com/276276.html