博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java多线程编程核心技术阅读笔记系列——第一章Java多线程技能
阅读量:6389 次
发布时间:2019-06-23

本文共 1629 字,大约阅读时间需要 5 分钟。

hot3.png

##实现多线程的方式:

        继承Thread类         实现Runnable接口

执行start()方法的顺序不代表线程启动的顺序

**构造函数Thread(Runnable target)不光可以传入Runnable接口的对象,还可以传入一个Thread类的对象,这样做完全可以将一个Threa对象中的run()方法交由其他线程进行调用 ** ##在某些JVM中,i--的操作要分成如下3步:

  • 取得原有i值
  • 计算i-1
  • 对i进行赋值 

##currentThread():返回代码段正在被那个线程调用的信息 

###currentThread()和 this的差异

  • Thread.currentThread().getName()在两种实现线程的方式中都可以用
  • this.getName()只能在继承方式中使用。因为在Thread子类中用this,this代表的是线程对象。
  • 如果你在Runnable实现类中用this.getName(),那么编译错误,因为在Runnable中,不存在getName方法
  • 使用Thread.currentThread().getName()和使用this.getName(),都可以得到线程的名称,但是使用this调用getName()方法只能在本类中,而不能在其他类中,更不能在Runnable接口中,所以只能使用Thread.currentThread().getName()获取线程的名称,否则会出现编译时异常。

isAlive():判断当前线程是否处于活动状态(线程已经启动且尚未终止:正在运行或准备运行状态)

sleep():在指定的毫秒内让当前“正在执行的线程(this.currentThread())”休眠(暂停执行)

##停止线程

**Thread.interrupt():不会终止一个正在运行的现场,还需要加入一个判断才可以完成线程的停止 仅仅实在当前线程打了一个停止的标志 **

Thread.stop():不安全,弃用的方法 ###停止线程的方法:

  • 退出标志:return+isInterrupter()+ interrupt()

  • stop()方法

  • interrupt()方法

  • 异常法:catch块中可以对异常的信息进行相关的处理而且使用异常流能更好、更方便的控制程序的运行流程,不至于代码中出现很多个return,造成污染

  • sleep+interrupt(): 如果在sleep状态下停止某一线程,会进入catch语句,并且清除停止状态值使之变成false;如果先interrupt()再sleep会抛出sleep interrupted异常

  • 暴力停止stop:stop()方法会抛出ThreadDeath异常(此异常不需要显示的捕捉) 如果强制让线程停止则有可能使一些请理性的工具得不到完成,另外一种情况就对所以的对象进行了“解锁”,导致数据得不到同步的处理,出现数据不一致的问题。

this.interrupted()静态方法:测试当前线程(运行此方法线程,就是此段代码运行的线程,不是指调用对象的线程)是否已经中断,线程中断状态由该方法清除(置为false)

this.isInterrupter():测试线程Thread对象是否已经中断

##暂停线程 suspend():暂停线程

resume():回复线程

suspend与resume缺点独占:如果使用不当,极易造成公共的同步对象的独占,是其他线程无法访问公共同步对象(println)不同步:

###yield 放弃当前的CPU资源,将它让给其他的任务去占用CPU执行时间

###优先级 优先级具有继承特性 设置线程优先级不能超过所属线程组的优先级 优先级具有规则性、随机性:高优先级的线程“总是大部分”先执行完

###守护线程 GC是典型的守护线程

转载于:https://my.oschina.net/u/2307114/blog/804164

你可能感兴趣的文章
远程SSH连接服务与基本排错
查看>>
Objective-C学习笔记(十九)——对象方法和类方法的相互调用
查看>>
win10 WmiPrvSE.exe WMI Provider 占用CPU过高的问题
查看>>
hdu 4945 2048(DP)
查看>>
论文阅读:CNN-RNN: A Unified Framework for Multi-label Image Classification
查看>>
开篇有益-解析微软微服务架构eShopOnContainers(一)
查看>>
IE新发现
查看>>
quick check
查看>>
游戏人生(一),我的lua之旅:那些坑爹的CCBReaderLoad
查看>>
Debug时含有的子元素,在代码里获取不到的问题
查看>>
UVA 11020 - Efficient Solutions(set)
查看>>
RStudio版本号管理 整合Git
查看>>
使用 PHPMailer 发送邮件
查看>>
文件系统管理 之 Linux 创建文件系统及挂载文件系统流程详解
查看>>
CSS选择器学习小结
查看>>
什么叫贸工技发展模式?什么叫技工贸发展模式?
查看>>
MyEclipse for Spring 10.0: GWT 2.1 and Spring Scaffolding
查看>>
水木-搜索引擎技术版
查看>>
yiStack平台维护
查看>>
android开发我的新浪微博客户端-用户授权页面UI篇(3.1)
查看>>