作者:我是攻城师

(一)创建线程的方式

(1)实现Runnable接口

(2)继承Thread类

推荐使用接口,能够做到定义与实现分离,耦合更低

(二)关于线程的优先级

thread2.setPriority(Thread.MAX_PRIORITY)

等级越高,优先运行

(三)关于线程的yield的方法

关于yield方法,是指当前线程可能运行不太重要的任务,可以通过这个方法暗示操作系统线程调度我可以晚点执行,先把CPU资源让给优先级给我一样或者大于我的任务,如果没有没有发现符合条件的线程,那么还会执行该线程的任务

(四)关于线程的join方法

在main方法中,启动一个线程A,如果执行了A.join()方法,那么主线程必须等待A线程执行完,才能执行join之后的代码。

(五)关于线程的sleep方法

让当前线程沉睡一定的周期

(六)关于线程的interrupt方法

用来告诉某个线程应该停止,如果这个线程当前正在执行wait,sleep,join方法时会抛出 InterruptedException ,如果正常状态下,我们可以通过isInterrupted()=true的时候,来停止线程使用return方法。

(七)关于线程的start和run方法

注意,要让线程运行,只能执行start方法,这个方法是native方法,run方法是我们定义任务的地方,单独的调用run方法,就和调用正常方法是一样的。start方法只能调用一次,超过一次则会抛出不合法状态异常。

(八)关于线程的状态

在Oracle的官网文档中,定义了线程有六种状态分别是:

(1)NEW,执行new Thread()后,还没启动的线程

(2)RUNNABLE ,执行完new后,又执行了start方法

(3)BLOCKED 等待获得一个锁的监视器,或者等待进入一个同步块或者方法

(4)WATTING 等待其他的线程执行一个特定的操作,没有任何时间限制

(5)TIMED_WAITING 等待其他的线程在一定的时间周期内

(6)TERMINATED 完成任务后的线程

这有一幅图,总结的比较全面大家可以看下:

(九)总结

本篇文章主要介绍了Java里面一些线程基本的方法和概念,最后又叙述了关于线程运行时的状态,尤其是线程调度这块依赖底层的操作系统,在不同的系统上运行可能得到不同的结果,这一点需要注意。

Java面试中的“劲敌”线程,9个疑问全面解析的更多相关文章

  1. JAVA面试中问及HIBERNATE与 MYBATIS的对比,在这里做一下总结

    我是一名java开发人员,hibernate以及mybatis都有过学习,在java面试中也被提及问道过,在项目实践中也应用过,现在对hibernate和mybatis做一下对比,便于大家更好的理解和 ...

  2. JAVA面试中问及HIBERNATE与 MYBATIS的对比,在这里做一下总结(转)

    hibernate以及mybatis都有过学习,在java面试中也被提及问道过,在项目实践中也应用过,现在对hibernate和mybatis做一下对比,便于大家更好的理解和学习,使自己在做项目中更加 ...

  3. Java面试中遇到的坑【填坑篇】

    看到大家对上篇<Java面试中遇到的坑>一文表现出强力的关注度,说明大家确实在面试中遇到了类似的难题.大家在文章留言处积极留言探讨面试中遇到的问题,其中几位同学还提出了自己的见解,我感到非 ...

  4. 带你全面了解高级 Java 面试中需要掌握的 JVM 知识点

    目录 JVM 内存划分与内存溢出异常 垃圾回收算法与收集器 虚拟机中的类加载机制 Java 内存模型与线程 虚拟机性能监控与故障处理工具 参考 带你全面了解高级 Java 面试中需要掌握的 JVM 知 ...

  5. [转载]java面试中经常会被问到的一些算法的问题

    Java面试中经常会被问到的一些算法的问题,而大部分算法的理论及思想,我们曾经都能倒背如流,并且也能用开发语言来实现过, 可是很多由于可能在项目开发中应用的比较少,久而久之就很容易被忘记了,在此我分享 ...

  6. JAVA面试中需要准备的点

    零基础入门学习Java,如何准备Java初级和高级的技术面试   本人最近几年一直在做java后端方面的技术面试官,而在最近两周,又密集了面试了一些java初级和高级开发的候选人,在面试过程中,我自认 ...

  7. Java面试中笔试题——Java代码真题,这些题会做,笔试完全可拿下!

    大家好,我是上海尚学堂Java培训老师,以下这些Java笔试真题是上海尚学堂Java学员在找工作中笔试遇到的真题.现在分享出来,也写了参考答案,供大家学习借鉴.想要更多学习资料和视频请留言联系或者上海 ...

  8. Java 面试中遇到的坑

    Java开发中很多人都不愿意修改自己以前的代码,看别人的代码更是无法忍受,当看到别人代码里面一些匪夷所思的写法实现时,恨不得找到负责人好好跟他谈谈心,那么你在开发中是不是也使用到以下几种实现呢. 1. ...

  9. Java面试经典题:线程池专题

    1.什么是线程池 线程池的基本思想是一种对象池,在程序启动时就开辟一块内存空间,里面存放了众多(未死亡)的线程,池中线程执行调度由池管理器来处理.当有线程任务时,从池中取一个,执行完成后线程对象归池, ...

随机推荐

  1. Day2数据结构和算法

    2019-02-28,10:23:52 算法效率的度量方法 事后统计方法:为每一个程序编制测试程序 ,比较时间.(很麻烦,没有普遍适用性) 事前分析估算方法:在计算机程序编写前,依据统计方法对算法进行 ...

  2. VSCode下调试mocha测试用例

    之前使用tape做Node.js的单元测试,最方便一条就是使用它就和自己写个控制台应用程序测试一样,控制起来比较灵活,直接用VSCode进行调试也比较方便.然而tape输出中文字符总是乱码,想了很多办 ...

  3. chrome小书签-实用的小功能-javascript代码段

    1.打印页面的所有脚本引用文件及代码段: javascript:var scriptarray=document.getElementsByTagName("script");fo ...

  4. Visual Studio Installer 使用案例

    1.创建自定义操作 一步:新建“安装程序类”文件 2.重写函数: public override void Install(IDictionary stateSaver) { base.Install ...

  5. java redispool测试类保存

    这两天睡眠不足,今晚吃完饭,肚子烦躁的很,迟迟进入不了代码的状态,强打精神,又赶上处理了几个编辑器的报错,等到真正面对问题的时候又是晚上十一点, 晚上十一点是幸运点,到这个点无关问题都能解决完毕进入调 ...

  6. Swift.Operator-and-Items-in-Swift(1)

    Operator and Item 1. ..< a for-in loop and the half-open range operator (..<) // Check each pa ...

  7. python AES加密 ECB PKCS5

    class AesEbc16:  # 按块的大小, 一块一块的加密, 明文和密文长度一样 def __init__(self): self.key = b"123qweqqqwerqwer& ...

  8. GUI学习之七——单选框QRadioButton和QButtonGroup的学习总结

    一.单选框QRadioButton的使用 1.类的描述 a.单选框按钮用于给用户提供若干选项中的单选操作,当一个被选中时,会自动取消选中的那个.(如果只有一个时可以通过单击该按钮改变其状态:而存在多个 ...

  9. Python之路(第三十九篇)管道、进程间数据共享Manager

    一.管道 概念 管道可用于具有亲缘关系进程间的通信,有名管道克服了管道没有名字的限制,因此,除具有管道所具有的功能外,它还允许无亲缘关系进程间的通信. 先画一幅图帮助大家理解下管道的基本原理 现有2个 ...

  10. core的微服务相关

    网关是ocelot consul 服务发现 配置中心apollo