现在的位置: 首页 > 综合 > 正文

进程和线程的概念以及如何创造线程

2018年06月05日 ⁄ 综合 ⁄ 共 1526字 ⁄ 字号 评论关闭

1:计算机的CPU承担了所有的任务,他就像一座工厂,时刻在运行。

2:CPU一次只能执行一个任务,我们可以假定工厂的电力有限,一次只能供给一个车间使用,也就是说一个车间开工时,其他车间都必须停工。

3:进程就好比工厂的车间,它代表着CPU所能处理的单个任务。任一时刻,CPU总是运行一个进程,其他进程处于非运行状态。

4:一个车间里有很多工人,他们协同完成一个任务,线程就好比车间里的工人,一个进程包括了多个线程。

综上所述:

A:进程是程序在某个数据集上的执行,他是一个动态的实体,它有自己的生命周期。它因创建而产生,因调度而运行,因等待资源或事件而处于等待状态,因任务完成任务而被销毁。

B:线程是一个程序里的不同执行路径,以前说编写的程序,每个程序都有一个入口,一个出口,以及顺序的执行点,事实上,在单个程序的内部是可以在同一时刻进行多种运算的,这就是所谓的多线程。

多线程的优点:

多线程编程简单,效率高(能直接共享数据和资源,多进程不能做到),适合开发服务程序(如:web服务,聊天服务)。

创建线程!

方法一:

1:创建一个继承Thread的类(如类A),并重写Thread中的run()方法。

2:创建类A的对象(如 a)。

3:调用start()方法【start()方法是从Thread继承过来的】.

/*
 * 创建一个类继承Thread
 */
class A extends Thread{
	
	@Override
	public void run() {
		
		while (true){
			System.out.println("你好!");
		}
	}
}

public class ThreadTest1 {

	public static void main(String[] args) {

		/*创建A的对象*/
		A a = new A();
		/*调用.start()方法启动线程*/
		a.start();
		
		while (true){
			System.out.println("我好~~~~~");
		}
	}

}

程序运行的结果:

从图中可以发现,即使类A中有个死循环,但是依然输出了“我好~~~”,这就说明,多线程可以执行一个程序的多条路径。

注意:

1:对象调用的是.start()方法而不是.run()方法,如果调用run()方法,程序就变成单线程了,还是会顺序执行。

2:调用.start()方法后并不表示对象对应的线程就一定会立即得到执行,执行完后只代表该对象具有了被CPU执行的资格,但由于想抢占执行的线程很多,CPU不一定会立即去执行。

3:一个Thread对象能且只能代表一个线程,一个Thread对象不能调用两次start()方法,否则会抛出异常。

线程状态的切换:

从图中就可以看出,调用start()之后,只是进入就绪状态,并不是运行状态。

方法二:

1:定义一个类(如类A),并实现Runnable接口。

2:创建A的对象a。

3:利用a构造一个Thread对象thread。

4:调用thread中的start()方法。

/**
 * 创建一个类实现Runnable接口
 * @author Liao
 *
 */
class A implements Runnable{

	@Override
	public void run() {
	
		while (true){
			System.out.println("你好!!!");
		}
		
	}
	
}

public class ThreadTest2 {

	
	public static void main(String[] args) {
		
		/*创建A的对象*/
		A a = new A();
		/*利用a构建Thread的对象*/
		Thread thread = new Thread(a);
		/*启动线程*/
		thread.start();
		
		while (true){
			System.out.println("BBBB~~~~~");
		}
	}

}

抱歉!评论已关闭.