java之多线程技术分享

编辑: 来源: 时间: 2017-10-12 16:15 阅读:

 

     

光环大数据各专业就业率除了与教学品质有紧密的关系,与行业发展也有关系。从下图可以看到,本科、研究生学历人员学习大数据开发已广泛普及;大型企业就业率非常高,就业方面推荐就业占比很高;就业岗位方面,大数据相关的岗位中大数据开发最多,大数据可视化工程师次之,就业学员的大学专业中,计算机类专业的人最多。以上可以看出,大数据在每个行业需求都非常大,所以越来越多的人都加入到大数据的学习热潮中!

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培训、大数据培训机构、大数据培训班、数据分析培训、大数据可视化培训,就选光环大数据!光环大数据,聘请专业的大数据领域知名讲师,确保教学的整体质量与教学水准。讲师团及时掌握时代潮流技术,将前沿技能融入教学中,确保学生所学知识顺应时代所需。通过深入浅出、通俗易懂的教学方式,指导学生更快的掌握技能知识,成就上万个高薪就业学子。 更多问题咨询,欢迎点击------>>>>在线客服

你可能也喜欢这些

在线客服咨询

领取资料

X
立即免费领取

请准确填写您的信息

点击领取
#第三方统计代码(模版变量) '); })();
'); })();