C1024猴

导航

java多线程01-线程初识

一、线程简介

1、线程是什么,为什么使用多线程

要说线程,必须先说进程。进程是指在系统中正在运行的一个应用程序;线程是系统分配处理器时间资源的基本单元,或者说进程之内独立执行的一个单元。

为什么使用多线程,因为可以并行处理多个任务,提高cpu的利用率。

来个场景:

有一天,我去饭店吃饭,这个饭店只有一个厨师

“老板,给我来个酸辣土豆丝!”“好来,您前边还有十个客户,请等一下”。这是单线程,一个厨师,按照顺序做饭,我只能等待前面十个人的菜都做完才能吃到饭,假如有一个人点了一个水饺,需要半个小时才能好,那厨师半个小时只能闲着,无疑会浪费很多时间。“算了,不吃了,太久了”

此时如果是多线程。“老板,来一个酸辣土豆丝”!“好来,我去给厨师说”,厨师接到老板指示,又增加了一口锅,一会给A客户做水饺,一会给我做土豆丝。这样客户就不用等那么久了。这就是多线程的好处,可以“同时”做多个任务,不需要顺序执行。这里的“同时”并不是真正的同时,而是厨师一会做水饺,一会做土豆丝。因为只有一个厨师,相当于单核电脑。如果有多个厨师,就可以真正的“同时”,一个厨师做水饺,一个做土豆丝了。

场景中的厨师相当于cpu,做饭是一个进程,做水饺是一个线程,做土豆丝也是一个线程。厨师做饭的同时,还要做直播,那直播是另一个进程。

二、如何创建和运行线程

如何创建线程:构造Thread类。常常看到说创建线程有两种方式,一个是创建一个Thread类,一种是实现Runnable接口,这种说法是不严谨的。准确的说创建线程只有一种方法,就是构造Thead类,而实现程程的执行单元有两种方式,一是通过重写Thread的run方法,一个是实现Runbable接口的run方法。

如何运行线程:调用线程的start方法。

1、通过重写Thread类的run方法实现程程的执行单元,调用start方法运行线程

public class ThreadTest {
	public static void main(String[] args) {
		Thread thread1 = new Thread(){
			@Override
			public void run(){
				System.out.print("酸辣土豆丝");
			}
		};
		thread1.start();
		System.out.println("水饺");
	}
}

2、通过实现Runnable接口实现程程的执行单元,调用start方法运行线程

public class ThreadTest {
	public static void main(String[] args) {
		Thread suanlatudousiThread = new Thread(new suanlatudousiTask());
		Thread shuijiaoThread = new Thread(new shuijiaoTask());
		suanlatudousiThread.start();
		shuijiaoThread.start();
	}
}
class suanlatudousiTask implements Runnable{
	@Override
	public void run() {
		System.out.println("酸辣土豆丝");
	}
}
class shuijiaoTask implements Runnable{
	@Override
	public void run() {
		System.out.println("水饺");		
	}
}

 

 

posted on 2019-07-20 10:39  C1024猴  阅读(130)  评论(0)    收藏  举报