多线程

在坦克大战中运用到了多线程的知识点,需要我们学习、掌握线程的知识,并且能够熟练运用。

线程、进程的概念:

线程(thread)是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。
进程是指运行中的应用程序,每个进程都有自己独立的地址空间(内存空间),比如用户点击桌面的ie浏览器,就启动了一个进程,操作系统就会为该进程分配独立的地址空间。电脑中时会有很多单独运行的程序,每个程序有一个独立的进程,而进程之间是相互独立存在的。进程想要执行任务就需要依赖线程。

多线程的概念:

要理解多线程,首先要明白串行和并行。
所谓串行,其实是相对于单条线程来执行多个任务来说的,我们就拿下载文件来举个例子:当我们下载多个文件时,在串行中它是按照一定的顺序去进行下载的,也就是说,必须等下载完A之后才能开始下载B,它们在时间上是不可能发生重叠的。
并行:下载多个文件,开启多条线程,多个文件同时进行下载,这里是严格意义上的,在同一时刻发生的,并行在时间上是重叠的。
多任务操作系统,如果是单CPU,CPU为每个程序分配一段时间很短的时间片,时间片执行完,就会执行下一个程序的时间片,因为时间片很短,CPU执行速度快,给人的感觉是多个程序同时执行。

举个例子,我们打开腾讯管家,腾讯管家本身就是一个程序,也就是说它就是一个进程,它里面有很多的功能,我们可以看下图3-2,能查杀病毒、清理垃圾、电脑加速等众多功能。
按照单线程来说,无论你想要清理垃圾、还是要病毒查杀,那么你必须先做完其中的一件事,才能做下一件事,这里面是有一个执行顺序的。
如果是多线程的话,我们其实在清理垃圾的时候,还可以进行查杀病毒、电脑加速等等其他的操作,这个是严格意义上的同一时刻发生的,没有执行上的先后顺序,一个进程运行时产生了多个线程。
线程有什么用处那?在我们的坦克大战游戏中,可以看出不止一个敌方坦克,每个坦克都有自己的运动轨迹和发射子弹的行为,这就是典型的多线程并发程序。

线程与进程的区别:

线程是轻量级进程
线程没有独立的地址空间
线程是进程创建的
一个进程可以拥有多个线程,至少有一个线程
线程有生命周期,新建、就绪、运行、阻塞、死亡状态

创建线程的两种方法:

1)继承Thread,并重写run方法(线程体,线程要完成的任务),调用start()方法启动线程,Java虚拟机会自动调用run方法
2)实现Runnable接口,并实现接口中的run方法,创建Thread对象,然后调用start()方法启动线程

下为创建线程的举例:

public class xiancheng {
	public static void main(String[] args) {
		// TODO 自动生成的方法存根	
		xiancheng1 th = new xiancheng1();
		th.start();
		xiancheng2 ru = new xiancheng2();
		Thread th1 = new Thread(ru);
		th1.start();
		
	}
}
class xiancheng1 extends Thread{
		public void run() {
			while(true) {
				System.out.println("hello");
				}		
}	
}
class xiancheng2 implements Runnable {
	

@Override
public void run() {
	// TODO 自动生成的方法存根
		while (true) {
			System.out.println("word");		
		}
}


}

运行的结果hello与world随机交替出现

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值