Java语言多线程编程的核心技术讲解
小标 2018-12-04 来源 : 阅读 1154 评论 0

摘要:本文主要向大家介绍了Java语言多线程编程的核心技术讲解,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助。

本文主要向大家介绍了Java语言多线程编程的核心技术讲解,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助。


 

补充回顾:


1.多态:同一个行为具有不同的表现。多态的三个必要条件,继承,重写,父类对象引用指向子类对象。


2.封装:提供一个外部访问,保护内部代码,修改内部代码的同时不影响外部的使用。


一、


1.1start方法,执行顺序:线程的start()方法执行一些线程的初始化工作,并告诉线程调度程序此线程以准备好执行,等待线程调度程序来调度。线程调度程序调用这个线程的时间是不确定的,所以两个线程对象先后执行start()方法,哪个线程对象先执行也是不知的。


1.2thread类:也是一个实现Runnable接口的类。


1.3i++和++i:i++是先进行赋值再自增,++i是先进行自增再进行赋值。这两个操作都不是 原子操作,可以分为三个步骤,取得i的值,对i增加或减少,再对i赋值。在这三个步骤中就可能产生线程安问题。


1.4线程的共享变量:怎么样才能使得多个线程对同一个变量(共享变量)访问呢?声明一个thread对象a。Thread b=new Thread(a,"b");Thread c=new Thread(a,"c");因为thread构造方法有个可以传入thread对象作为参数。这样b、c两个线程共享a线程对象中的变量。


1.5synchronized关键字:使用此关键字可以为一个对象或一个方法加锁,使得多个线程同时访问这个方法或对象的时候,以顺序的形式访问,不会产生线程安全问题。


1.6关于synchronized关键字的使用讲解


1.7System.out.println()方法是同步的:public void println(String s){synchronized(this){print(s);newLine();}}


1.8Thread.currentThread()方法: 返回代码段正在被哪一个线程的信息。


1.9threadobj.isAlive()方法: 判断线程是否处于活动状态。活动状态:线程处于运行或者准备状态。


2.0mythread tt=new mythread();Thread c=new Thread(tt);此时的this.getname()和Thread.currentThread().getname()返回的信息可能不同。因为再c中将传入的tt绑定到一个private target对象中,调用this时指定的就是target对象。而Thread.currentThread().getname()返回的时tt线程对象的信息。详解链接


2.1判断一个线程是否停止:interrupted和isinterrupted。这两个方法的区别第一个方法是一个静态方法,并且第一此调用interrupted方法后会将线程的状态置为false,也就是说你第二次再调用这个方法的时候返回的是false。isinterrupted则不会重置线程的状态。


2.2如果一个线程在sleep中进行终止。则会进入interrupted异常,并执行异常语句块执行。反之一个线程先进行中断在进行睡眠也会产生异常。


2.3调用stop()方法: 会强制的停止线程,但是这个方法不推荐,因为这个方法会使一些清理不能进行,还会出现释放锁,导致数据不一致的结果。


2.4方法suspend(): 能够暂停线程,但是暂停线程后并不释放线程所占用的公共资源的锁。


2.5方法suspend()和resume()方法: 被废弃的原因是因为这两个方法会导致数据的不同步,根本原因是不能释放公共资源锁。


2.6yield()方法:暂时释放cup资源,放弃的时间点是不确定的。获得的时间也是不确定的。可能刚放弃立马就获得了cpu资源。


2.7优先级:在java中,优先级是由1-10的数字表示,数字越大优先级越高,优先级越高cpu分配给这个线程的执行资源就越多,也就意味着一般此线程会先执行玩。MIN_PRIOTITY=1,NORM_PRIORITY=5,MAX_PRIORITY=10。如果设置优先级小于1或则大于10将会抛出异常。


2.8获取当前系统时间:system.currentTimeMillis()方法。


2.9java中线程的优先级是具有继承性的,A线程是什么优先级,由A线程创建的线程就是什么优先级。


3.0


          

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注编程语言JAVA频道!

本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式AI+学习就业服务平台 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved