java之多线程技术分享
光环大数据各专业就业率除了与教学品质有紧密的关系,与行业发展也有关系。从下图可以看到,本科、研究生学历人员学习大数据开发已广泛普及;大型企业就业率非常高,就业方面推荐就业占比很高;就业岗位方面,大数据相关的岗位中大数据开发最多,大数据可视化工程师次之,就业学员的大学专业中,计算机类专业的人最多。以上可以看出,大数据在每个行业需求都非常大,所以越来越多的人都加入到大数据的学习热潮中!
Java作为大数据培训课程的技术基础,也是其中重要的课程之一,我们先来了解下。
一、多线程
什么是程序?为了完成某项特定的任务,使用某种语言,编写一组指令的集合。
什么是进程?一个正在进行中的程序。
什么是线程?在一个进程中执行的一套功能流程,称为线程
在一个进程中执行的多套功能流程,称为多线程
二、为什么使用多线程?
抢占式策略系统:系统会分配给每个执行任务的线程一个很小的时间段,当该时间段用完后
系统会剥夺其使用权,交给其他线程去执行
1.多线程可以提高程序的效率,可以尽可能的利用cpu的资源
2.增强用户体验
三、如何使用多线程?
创建执行线程的方式一:
①创建一个类继承Thread类
②重写run()方法,同时编写线程执行体
③创建该子类的实例
④调用start()方法,启动线程。默认执行run()方法
创建执行线程的方式二:
①创建一个类实现Runnable接口
②实现接口中的run()方法,同时编写线程执行体
③创建该实现类的实例
④创建Thread实例,将实现类的实例作为参数,传递给Thread的构造器
⑤调用Thread类的start()方法,启动线程。默认执行run()方法
继承方式与实现方式的区别?
①当需要多个线程访问共享数据时,首选使用实现Runnable接口的方式
②实现Runnable接口,解决了Java中单继承的局限性
四、线程的常用方法
currentThread():获取当前线程
getName():获取线程名称
setName():设置线程名称
start():启动线程
sleep(longmillis):是一个静态方法,使当前线程进入睡眠状态
join()/join(longmillis):是一个实例方法,使当前线程进入阻塞状态
interrupt():用于唤醒阻塞状态的线程
yield():线程让步
isAlive():判断线程是否处于存活状态
五、线程的优先级(1-10):默认的优先级为5。优先级高并不意味着线程一定先执行,只不过更多的获取cpu的资源
MAX_PRIORITY:10
NORM_PRIORITY:5
MIN_PRIORITY:1
getPriority():获取线程的优先级
setPriority():设置线程的优先级
六、线程的生命周期
七、线程同步:
模拟售票程序:实现三个窗口同时售票100张
问题:当三个线程同时访问共享数据时,出现了无序、重复、超额售票等多线程安全问题
解决办法:将多个线程需要访问的共享数据包装起来,确保一次只能有一个线程执行流访问该共享数据
Java为上述问题也提供了相应的解决办法
1.同步代码块:
synchronized(同步监视器){
//需要访问的共享数据
}
同步监视器:俗称“锁”,可以使用任意对象充当。但是确保多个线程持有同一把锁(同一个对象)
2.同步方法:使用在方法的声明处,加synchronized关键字
如:
publicsynchronizedvoidshow(){}
3.同步锁:Lock接口
注意:必须保证手动的释放锁(unlock())
大数据培训,就选光环大数据!
原创文章,转载请注明出处:光环大数据http://hadoop.aura.cn
大数据培训、人工智能培训、Python培训、大数据培训机构、大数据培训班、数据分析培训、大数据可视化培训,就选光环大数据!光环大数据,聘请专业的大数据领域知名讲师,确保教学的整体质量与教学水准。讲师团及时掌握时代潮流技术,将前沿技能融入教学中,确保学生所学知识顺应时代所需。通过深入浅出、通俗易懂的教学方式,指导学生更快的掌握技能知识,成就上万个高薪就业学子。 更多问题咨询,欢迎点击------>>>>在线客服!