多线程的相关概念及实现方式

多线程的引入:


# 1、什么是线程:

 - 线程是程序执行的一条路径,一个进程中可以包含多条线程
 - 多线程并发执行可以提高程序的效率,可以同时完成多项工作
 
# 2、多线程的应用场景:

 - 迅雷开启多条线程一起下载
 - QQ同时和多个人一起视频
 - 服务器同时处理多个客户端的请求

多线程并行和并发的区别:

 - 1、并行就是两个任务同时运行,就是甲任务进行的同时,乙任务也在进行(需要多核CPU)
 - 2、并发是指两个任务都请求运行,而处理器只能接受一个任务,就把这两个任务安排轮流进行,由于时间间隔较短,使人感觉两个任务都在运行
 - 比如我跟两个网友聊天,左手操作一台电脑和甲聊,同时右手用另一台电脑和乙聊,这就叫并行
 - 如果用一台电脑,给甲发消息,再立刻给乙发消息,再给甲发,再给乙发...,这就叫并发

Java程序运行原理和JVM的启动是多线程吗?

Java程序运行原理:

	Java命令会启动Java虚拟机,启动JVM,等于启动了一个应用程序,也就是启动了一个进程,该进程会自动启动一个“主线程”,然后主线程去调用某个类的main方法。

JVM的启动是多线程吗?

	JVM启动至少启动了垃圾回收线程和主线程,所以是多线程的。

多线程的实现方式:

1、继承Thread类:
	
 - 定义类继承Thread
 - 重写run()方法
 - 把新线程要做的事写在run()方法中
 - 创建线程对象
 - 开启新线程.start(),内部会自动执行run()方法

2、实现Runnable接口:

 - 定义类实现Runnable接口
 - 实现run()方法
 - 把新线程要做的事写在run()方法中
 - 创建自定义的Runnable的子类对象
 - 创建Thread对象,传入Runnable的子类对象
 - 调用start()开启新线程,内部会自动调用Runnable的run()方法

两种方式的区别:
	A、继承Thread类:
		好处是:可以直接使用Thread类中的方法,代码简单
		弊端是:如果已经有了父类,就不能用这种方法
	B、实现Runnable接口:
		好处是:接口可以多实现
		弊端是:不能直接使用Thread中的方法,需要先获取到线程对象后,才能使用Thread的方法,代码复杂

sleep()方法和wait()方法的区别:

1、 sleep()方法必须传入参数,参数就是时间,时间到了自动醒来
	wait()方法可以传入参数也可以不传入参数,传入参数就是在参数的时间结束后等待,不传入参数就是直接等待
	
2、 sleep()在同步函数或同步代码块中,不释放锁,睡着了也抱着锁睡
	wait()方法在同步函数或同步代码块中,释放锁
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值