多线程入门篇

首先,我们需要理解并行并发

并发和并行是两个不同的概念,并发指同一时刻只能有一条指令执行,但是多个进程之间快速切换(1/n毫秒),所以宏观上给我们的感觉是多个进程在同时执行,比如说我们一边听歌,一边写代码,还可以一边打开浏览器上网;并行是指在同一时刻,多个指令在多个处理器上同时执行,比如我们的电脑cpu是双核4线程,双核好比两个大脑,控制4个线程,电脑可以并行执行4个线程(同时运行4个进程,比如QQ,微信,音乐,播放器同时执行,不需要切换)。
所以,性能提升的核心在于并发而非并行

接下来,我们要知道的进程线程

进程:一个正在运行中的程序,比如360安全卫士(我主要是用来更新软件,没这玩意可能更“安全”一些),就是一个进程。
线程:是进程的一个执行单元,是进程功能的扩展,比如360中的木马查杀、电脑修复、电脑清理等等,都是360安全卫士的一个个的线程,彼此之间独立执行。
所以,一个进程可以包含多个线程,但是至少有一个线程,不然程序无法运行,线程是进程的具体执行者。

注意:电脑cpu的线程和进程的线程不是一个意思


Java其实就是一个多线程的程序,至少有两条线程在执行,主线程(main线程)和垃圾回收线程

Java使用Thread类代表线程,所有线程对象都必须是Thread类或其子类的实例


Java创建线程有两种常用方式:


第一种:
1、创建子类继承自Thread类
2、重写run方法
3、创建子类对象
4、调用start()方法来启动该线程

public class Demo extends Thread{
	//重写run方法
	public void run(){
		//该进程执行的功能代码
	}
}

public class Test{
	public static void main(String[] args){
		//创建子类对象
		Demo d = new Demo();
		//调用start方法
		d.start();//此时该线程已经启动,会自动调用run()方法执行
	}
}
第二种:
1、创建子类实现Runnable接口
2、重写run方法
3、创建子类对象
4、创建Thread类对象,调用Thread类的Thread(Runnable target)方法,将3步骤创建的子类对象传入
5、用Thread类对象调用start()方法来启动该线程

注意:start()方法为Thread类所有,接口Runnable中没有该方法
start()方法为Thread类所有,接口Runnable中没有该方法

public class DemoImpl implements Runnable{
	public void run(){
	}
}

public class Test{
	public static void main(String[] args){
		//创建子类对象
		DemoImpl d = new DemoImpl();
		//创建Thread类对象
		Thread t = new Thread(d);
		t.start();
	}
}
建议通过第二种方式创建线程:
1、避免了单继承的局限性---接口可以多实现,并且实现了Runnable接口还可以继承其他类
2、多个线程可以共享同一个target对象,所以非常适合多个相同线程来处理同一份资源的情况

Java中线程为抢占式执行,即谁抢到CPU的执行权谁就执行

public class DemoImpl implements Runnable{
	public void run(){
		//循环输出0-9
		//Thread.currentThread().getName()获取当前线程对象名
		for(int i = 0;i<10;i++){
		System.out.println(“线程”+Thread.currentThread().getName()+"---"+i);
	}
}

public class Test{
	public static void main(String[] args){
		//创建子类对象
		DemoImpl d = new DemoImpl();
		//创建Thread类对象
		Thread t = new Thread(d);
		t.start();
		
		//main线程中循环输出0-9
		for(int i = 0;i<10;i++){
		System.out.println(“线程”+Thread.currentThread().getName()+"---"+i);
	}
}
执行结果为:







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值