本文共 2430 字,大约阅读时间需要 8 分钟。
一,进程是正在运行的程序,是对一个程序的运行状态和资源占用(内存,CPU)的描述,通过进程ID区分。
二,进程是程序的一个动态过程,它指的是从代码加载到执行完毕的一个完成过程。 三,目前操作系统支持多进程多任务。a.独立性:不同的进程之间是独立的,相互之间资源不共享(举例:两个正在上课的教室有各自的财产,相互之间不共享)
b.动态性:进程在系统中不是静止不动的,而是在系统中一直活动的; c.并发性:多个进程可以在单个处理器上同时进行,且互不影响;
线程就是一条执行路径,是进程的组成部分,一个进程可以有多个线程,每个线程去处理一个特定的子任务。
使得当前正在执行的线程休眠5秒钟,释放时间片,导致线程进入阻塞状态;
相当于将当前线程挂起5秒钟,这个操作跟线程的优先级无关,当对应的时间到了之后,还会再继续执行。可以通过设置优先级来改变线程抢到时间片的概率,优先级高的线程获得较多的执行机会。
默认情况下,每个线程的优先级都与创建它的父线程具有相同的优先级,例如:main线程具有普通优先级,则由main线程创建的子线程也有相同的普通优先级。 注意: 优先级范围1~10,默认为5,对应的数值越大,说明优先级越高,这个方法的设置一定要在start之前; 线程的优先级低并不意味着争抢不到时间片,只是抢到时间片的概率比较低而已。举例: p1.setPriority(5);在执行原来线程的过程中,如果遇到了合并线程,则优先执行合并进来的线程,执行完合并进来的线程后,再回到原来的任务中,继续执行原来的线程。
特点: 线程合并,当前线程一定会释放cpu时间片,cpu会将时间片分给要Join的线程; eg: joinThread.join(); //加入线程:阻塞当前线程(main),直到加入线程(joinThread)执行完毕,刚才被阻塞的当前线程才再次继续执行;程序在等待过程中,可以使用interrupt方法打断。
eg: interruptThread.interrupt(); //打断子线程抛异常:
1)系统描述:对于线程,当线程被创建,进入新生状态;调用start()方法 ,进入就绪状态(可执行状态);如果抢到cpu,进入运行状态;运行过程中出现了阻塞,进入阻塞状态;程序结束,进入死亡状态。
2)线程的五种状态:
3)线程的2种死亡方式:
线程分为前台(用户)线程和后台(守护)线程。
后台线程:隐藏起来一直在默默运行的线程,直到进程结束,又被称为守护线程。举例:JVM的垃圾回收线程就是典型的后台线程。特征:如果所有的前台线程都死亡、结束,后台线程才会死亡、结束。
前台线程:默认的线程都是前台线程,如果前台不执行完毕,程序不会退出。
eg: daemonThread.setDaemon(true); // 设置为后台线程
转载地址:http://tytzi.baihongyu.com/