写点什么

java 教程——线程,整合 springboot 集成实现动态刷新配置

作者:Java高工P7
  • 2021 年 11 月 10 日
  • 本文字数:1038 字

    阅读完需:约 3 分钟

  • 多线程模型是 Java 程序最基本的并发模型;

  • 后续读写网络、数据库、Web 开发等都依赖 Java 多线程模型。


因此,必须掌握 Java 多线程编程才能继续深入学习其他内容。


创建新线程


=====


方法一:从Thread派生一个自定义类,然后覆写run()方法:


package test;


public class changeData {


public static void main(String[] args) {


MyThread myThread = new MyThread();


myThread.start();


}


public static class MyThread extends Thread{


@Override


public void run() {


System.out.println("我来自子线程");


}


}


}


方法二:创建Thread实例时,传入一个Runnable实例:


package test;


public class changeData {


public static void main(String[] args) {


Thread t = new Thread(new MyRunnable());


t.start();


}


private static class MyRunnable implements Runnable {


@Override


public void run() {


System.out.println("我来自子线程");


}


}


}


要特别注意:直接调用Thread实例的run()方法是无效的:



直接调用run()方法,相当于调用了一个普通的 Java 方法,当前线程并没有任何改变,也不会启动新线程。上述代码实际上是在main()方法内部又调用了run()方法,打印hello语句是在main线程中执行的,没有任何新线程被创建。



必须调用Thread实例的start()方法才能启动新线程,如果我们查看Thread类的源代码,会看到start()方法内部调用了一个private native void start0()方法,native修饰符表示这个方法是由 JVM 虚拟机内部的 C 代码实现的,不是由 Java 代码实现的。


线程的优先级


======


可以对线程设定优先级,设定优先级的方法是:


Thread.setPriority(int n) // 1~10, 默认值 5


优先级高的线程被操作系统调度的优先级较高,操作系统对高优先级线程可能调度更频繁,但我们决不能通过设置优先级来确保高优先级的线程一定会先执行。


线程的状态


=====


在 Java 程序中,一个线程对象只能调用一次start()方法启动新线程,并在新线程中执行run()方法。一旦run()方法执行完毕,线程就结束了。因此,Java 线程的状态有以下几种:


  • New:新创建的线程,尚未执行;

  • Runnable:运行中的线程,正在执行run()方法的 Java 代码;

  • Blocked:运行中的线程,因为某些操作被阻塞而挂起;

  • Waiting:运行中的线程,因为某些操作在等待中;

  • Timed Waiting:运行中的线程,因为执行sleep()方法正在计时等待;

  • Terminated:线程已终止,因为run()方法执行完毕。


用一个状态转


《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》
浏览器打开:qq.cn.hn/FTe 免费领取
复制代码


移图表示如下:



线程终止的原因有:

用户头像

Java高工P7

关注

还未添加个人签名 2021.11.08 加入

还未添加个人简介

评论

发布
暂无评论
java教程——线程,整合springboot集成实现动态刷新配置