9.1 进程与线程

来源:互联网 发布:改mac地址的软件 编辑:程序博客网 时间:2024/06/04 08:20

进程是程序的一次动态执行过程,它经历了从代码加载,执行到执行完毕的一个完整过程。

这个过程也是进程本身从产生,发展到最终消亡的过程。

多进程操作系统能同时运行多个进程(程序)。

由于CPU具备分时机制,所以每个进程都能循环获得自己的CPU时间片。

由于CPU执行速度非常快,使得所有程序好像是在“同时”运行一下。

线程是比进程更小的执行单位,线程是进程内部单一的一个顺序控制流。

所谓多线程是指一个进程在执行过程中可以产生多个线程,这些线程可以同时存在,同时运行,形成多条执行线索。一个进程可能包含了多个同时执行的线程。

多线程是实现并发机制的一种有效手段。进程和线程一样,都是实现并发的一个基本单位。

线程和进程的主要体现在俩个方面

1 同样作为基本的执行单位,线程是划分的比进程更小的执行单位。

2 每个进程都有一段专用的内存区域。于此相反,线程却共享内存单元(包括代码和数据),

    通过共享的内存单元来实现数据交换,实时通信与必要的同步操作。


多线程的应用范围很广。在一般情况下,程序的某些部分特定的事件或资源联系在一起,同时又不想为他而暂停程序其他部分的执行,

这种情况下,就可以考虑创建一个线程,令他与那个事件或资源关联到一起,并让他独立于主程序的运行。

通过使用线程,可以避免用户在运行程序和得到的结果之间的停顿,还可以让一些任务在后台运行,而用户则在前台继续完成一些其他的工作。

总之,利用多线程技术,可以使变成人员方便的开发出能同时处理多个任务的功能强大的应用程序。

认识线程

在传统的程序语言里,运行的顺序总是必须顺着程序的流程来走,遇到 if-else语句就加以判断,遇到 for ,while 等循环就会多绕几个圈,

最后程序还是按着一定的程序走,且一次只能运行一个程序块。

Java的“多线程”打破了这种传统的束缚。所谓的线程(Thread)是指程序的运行流程,“多线程”的机制则是指可以同时运行多个程序块,

使程序运行的效率变得更高,也可克服传统程序语言所无法解决的问题。例如:有些包含循环的线程可能要使用比较长的一段时间来运算,此时便

可让另一个线程做其他的处理。

在这里将用一个简单的程序来说明单一线程与多线程的不同。

例:单一线程的例

public class java_ex24 {
public static void main(String[] args){
new TestThread24().run();
for(int i = 0; i < 10; i++){
System.out.println("run main");
}
}
}
class TestThread24{
public void run(){
for(int i = 0; i < 10; i++){
System.out.println("run TestThread24");
}
}
}

结果:

run TestThread24
run TestThread24
run TestThread24
run TestThread24
run TestThread24
run TestThread24
run TestThread24
run TestThread24
run TestThread24
run TestThread24
run main
run main
run main
run main
run main
run main
run main
run main
run main
run main

通过继承Thread类实现多线程

Thread存放在java.lang类库里,但并不需要加载java.lang类库,因为他会自动加载。

此外,run()方法是定义在Thread类里的一个方法,因此把线程的程序代码编写在run()方法内,事实上所做的就是覆盖的操作。

因此要使一个类激活线程,必须按照下面的语法来编写。 





0 0
原创粉丝点击