Java多线程介绍(01)

什么是进程、线程和多线程?

进程是指运行中的程序,它负责了程序运行时候内存的分配。

线程是一个程序代码的执行路径,它负责了任务代码的执行。例如:360安全卫士。

为什么360安全卫士可以同时进行电脑体检、木马查杀、垃圾清理等工作呢?

当运行360安全卫士的时候,如果我们点击垃圾清理,那么360安全卫士就会启用一个线程来执行垃圾清理的代码。如果点击了木马查杀,那么360就会启用一个线程来执行木马查杀的代码。如果点击了电脑体检,那么360就会启用一个线程来执行电脑体检的代码。这个就是多线程。所谓多线程,就是在同一个时间内有多个线程同时执行多个任务。之所以360安全卫士能够同时执行多个任务的原因,就是使用了多线程来实现的。

使用多线程的好处:

1)使得进程在同一个时间片内能够执行多个任务;

2)提高CPU的利用率;

但是,多线程并不是只有优点,它也有缺点:

1)降低线程的执行概率;

2)增加CPU的负担;

3)有可能会出现安全问题;

4)有可能会出现死锁问题;

所以,在实际开发中,如果需要执行一些比较耗时的任务的时候,才会考虑使用多线程。


如何定义线程?

第一步:定义一个类,继承Thread。

第二步:重写Thread类的run方法,在该方法中实现任务代码。

第三步:启动线程。

class FirstThread extends Thread {
	
	@Override
	public void run() {
		for (int i = 0; i < 100; i++) {
			System.out.println("自定义线程:" + i);
		}
	}
	
}

public class Demo1 {

	public static void main(String[] args) {
		FirstThread firstThread = new FirstThread();
		firstThread.start(); //启动线程
	}
	
}

注意:1)启动线程不要直接调用run方法,而是要通过Thread对象提供的start方法启动线程。2)在JVM中只有包含两条线程,一条是主线程,负责执行main方法的线程;另外一条是垃圾回收线程,负责回收系统资源的线程。


线程生命周期状态:

线程创建开始,到线程的消亡为止,一共经历了五个不同的状态:就绪状态、可运行状态、运行状态、阻塞状态、死亡状态。它们之间的转换如下图所示:

就绪状态:创建线程对象时候的状态;

可运行状态:调用线程的start方法时候的状态;

运行状态:当线程抢夺到了CPU执行权时候的状态;

阻塞状态:当线程调用了sleep(睡眠)、wait(等待)方法时候的状态。阻塞状态下的线程超过了睡眠时间或被其他线程唤醒,那么该线程就会重新进入可运行状态;

死亡状态:当线程的任务执行完毕的状态;

猜你喜欢

转载自blog.csdn.net/zhongliwen1981/article/details/82285381
今日推荐