java多线程 (1)
1、程序、进程、线程
程序:是一段静态的代码,它是应用软件执行的蓝本。
进程:是程序的一次动态执行过程,它对应了从代码加载、执行至执行完毕的一个完整过程,这个过程也是进程本身产生、发展至消亡的过程。
线程:线程是比进程更小的执行单位。
一个进程在其执行过程中,可以产生多个线程,形成多个执行线索,每个线索,即每个线程也有它自身的产生、存在和消亡的过程,也是一个动态的概念。
2、线程的状态与生命周期
java使用Thread类及子类的对象来表示线程,新建的线程在它的一个完整的生命周期中通常要经历如下的4个状态。
新建,当一个Thread类或其子类的对象被声明并创建时,新生的线程对象处于新建状态。此时它已经有了相应的内存空间和其他资源。
运行,线程创建后仅仅是占用了内存资源,在JVM管理线程中还没有这个线程,此线程必须调用start()方法通知JVM,这样JVM就会知道又有一个新线程排队等候切换了。
当JVM将CPU的使用权限切换给线程时,如果线程是Thread的子类创建的,该类中的run()方法就立刻执行。必须在子类中重写父类的run方法,因为Thread类中的run()方法没有具体内容。
中断,线程使用CPU资源期间,执行sleep(int millsecond)方法,使当前线程进入休眠状态。
wait()、notify()、notifyAll()之后再详细叙述。
死亡,处于死亡状态的线程不具有继续运行的能力。
线程死亡的原因有二种,一个是正常运行的线程完成了它全部工作;二是线程被提前强制性地终止。
demoCode:
public class threadDemo extends Thread{ public static void main(String[] args){ threadOne one = new threadOne(); threadTwo two = new threadTwo(); one.start(); two.start(); for(int i=0; i<=9; i++){ System.out.println("threadMain......"); } } } class threadOne extends Thread{ public void run(){ for(int i=0; i<=9; i++){ System.out.println("threadOne......"); } } } class threadTwo extends Thread{ public void run(){ for(int i=0; i<=9; i++){ System.out.println("threadTwo......"); } } }