文档章节

Java多线程编程核心技术(高洪岩)——阅读笔记

问题达人
 问题达人
发布于 2016/12/04 22:42
字数 707
阅读 62
收藏 1

【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>

第一章 Java多线程技能

    实现多线程的方式:

  •         继承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():判断当前线程是否处于活动状态(线程已经启动且尚未终止:正在运行或准备运行状态)

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

停止线程

    Thread.interrupt():不会终止一个正在运行的现场,还需要加入一个判断才可以完成线程的停止

                                仅仅实在当前线程打了一个停止的标志

    Thread.stop():不安全,弃用的方法

    停止线程的方法:

  •     退出标志:return
  •     stop()方法
  •     interrupt()方法
  •     异常法
  •     sleep+interrupt():如果在sleep状态下停止某一线程,会进入catch语句,并且清除停止状态值使之变成false;如果先interrupt()再sleep会抛出sleep interrupted异常
  •     暴力停止stop:stop()方法会抛出ThreadDeath异常(此异常不需要显示的捕捉),如果强制让线程停止则有可能使一些请理性的工具得不到完成,另外一种情况就对所以的对象进行了“解锁”,导致数据得不到同步的处理,出现数据不一致的问题。

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

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

 

 

 

 

© 著作权归作者所有

问题达人
粉丝 14
博文 94
码字总数 87491
作品 0
昌平
程序员
私信 提问
快过年了,我给小明制定了一份价值60万的Java学习计划

1. 有些人觉得,学习计划有什么好制定的——今天是一天,明天是一天,后天还是一天,一天一天的就这样过好了。 但我不这么觉得。 2. 高尔基曾说过:“书籍是人类进步的阶梯。”那,要想在201...

Java邵先生
01/22
0
0
GitHub 上可供新手阅读和玩耍的 Java 项目有哪些?

1.JavaGuide star:62.4k Java学习+面试指南。涵盖了Java语言、操作系统、数据结果与算法、数据库、系统设计等大部分Java程序员所需要掌握的核心知识。 2.算法-Java star:19.8k 适合用Java编...

九章算法
11/26
0
0
从java程序员到CTO的成长路线图

很多新人不知道从事java开发,具体的发展路径是怎么样的,甚至很多人都不能区分程序猿和攻城师的区别。包括不少小白,从事java开发都半年,甚至1年了,对职业发展还没有清晰的认证。这非常不...

6pker
2013/10/24
6.9K
3
好程序员大数据视频教程从零基础入门到精通

好程序员大数据视频教程从零基础入门到精通,学习大数据技术的必经之路是什么?是Hadoop吗?当然不是!如果想要踏入大数据的门槛,一个必须的条件就是我们的编程基础。熟练掌握一门编程语言是对大...

好程序员IT
04/03
27
0
成为Java顶尖程序员 ,看这11本书就够了

“学习的最好途径就是看书“,这是我自己学习并且小有了一定的积累之后的第一体会。个人认为看书有两点好处: 1.能出版出来的书一定是经过反复的思考、雕琢和审核的,因此从专业性的角度来说...

Java工程师-10
2017/05/23
820
3

没有更多内容

加载失败,请刷新页面

加载更多

oracle查杀连接会话

由于频繁强制启停tomcat不清理连接等情况时可能导致oracle连接爆满,此时可以使用这个方式清理 --查询select sess.sid,sess.serial#,sess.machine,lo.oracle_username,lo.os_user_name,...

孑竹三秋
13分钟前
5
0
为什么互联网公司天天都在招人?

互联网公司招聘是很重要的环节,互联网公司离职率普遍较高,传统企业离职率较低,所以对于公司招聘是很重要的环节,同样一句“很重要”我看到许多人理解其程度实际上大相径庭。在很多互联网公...

码农突围
14分钟前
4
0
001-open-falcon的单机版安装

open-falcon 每台服务器,都有安装falcon-agent,falcon-agent是一个golang开发的daemon程序,用于自发现的采集单机的各种数据和指标 单机安装 redis mkdir /home/redis && cd /home/redis...

伟大源于勇敢的开始
15分钟前
3
0
人工智能领跑的未来,智能CRM未来可期

现在,几乎每个技术预测故事都以同样的方式开始:人工智能AI正在开辟新的可能性。这种趋势同样发生在CRM领域中。 人工智能正在通过访问和分析来改变CRM。它正在通过添加语音助手、同时改善工...

怡海软件-CRM
17分钟前
3
0
mysql-5.7.28-linux-glibc2.12-x86_64配置(参考)

[client]socket                                            = /data/mysql/var/mysql.sockport                                         ...

Wybaron
20分钟前
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部