程序:就是是为实现特定目标或解决特定问题而用计算机语言编写的命令序列的集合。
进程:就是一个执行中的程序,当程序把代码放到代码区的时候,进程就开始了,进程是静态的。
线程: 是一个程序内部的顺序控制流,而且main是主线程,在机器里面运行的都是线程,像win,Linux都是支持多线程,多进程的,而dos仅仅支持单线程,如果是双cpu等,就真是多线程了,而且在cpu的时间片上,一会儿执行这个线程,一会儿又执行哪个线程,因为cpu的计算速度很快,所以看起来像多线程;
线程的优点:
(1)易于调度。
(2)提高并发性。通过线程可方便有效地实现并发性。进程可创建多个线程来执行同一程序的不同部分。
(3)开销少。创建线程比创建进程要快,所需开销很少。。
(4)利于充分发挥多处理器的功能。通过创建多线程进程(即一个进程可具有两个或更多个线程),每个线程在一个处理器上运行,从而实现应用程序的并发性,使每个处理器都得到充分运行。
线程和进程的联系:
(1)一个线程只能属于一个进程,而一个进程可以有多个线程,但至少有一个线程。
(2)资源分配给进程,同一进程的所有线程共享该进程的所有资源。
(3)处理机分给线程,即真正在处理机上运行的是线程。
(4)线程在执行过程中,需要协作同步。不同进程的线程间要利用消息通信的办法实现同步。
由此可以知道:线程之间交换数据是通过进程实现的。
线程的状态转换:
线程的实现方法:
方法一:
1,实现Runnable接口,写run方法
2,在主函数定义一个Thread对象,
3,调用.start;
方法二:
1,继承Thread类;
2,重写run方法;
3,调用start;
比较方法一和方法二:实现接口这个方法比较好一点,因为我们实现了这个接口还可以实现别的接口继承别的类,我一般都是用方法二的,今天刚知道有方法一,以后果断用方法一;