Java线程如何定义

发布时间:2021-09-10 10:55:21 作者:小新
来源:亿速云 阅读:105

小编给大家分享一下Java线程如何定义,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

定义线程

  1. 定义一个实现 Runnable 接口的类 A, 并实现该接口中的 run 方法, 最后实例化类 A, 作为 Thread 类的构造参数。

// 定义一个实现 Runnable 接口的类 A,  并实现该接口中的 run 方法
public class A implements Runnable {
    [@Override](https://my.oschina.net/u/1162528)
    public void run() {
        System.out.println("开启一个县城... ");
    }
}

// 实例化类 A
A task = new A();

// 作为 Thread 类的构造参数。 
Thread t = new Thread(task);
  1. 定义一个继承 Thread 类的类 A, 并重写类 A 的 run 方法

注意: 其实还是 Runnable 接口中 run 方法,因为 Thread 类实现了 Runnable接口

// 定义一个继承 Thread 类的类 A,  重写类 A 的 run 方法
public class A extends Thread {
    [@Override](https://my.oschina.net/u/1162528)
    public void run() {
        System.out.println();
    }
}

Thread t = new Thread();

其他:通过线程池 或者 实现Callable接口的方法。 暂时不多做介绍

通过实现 Runnable 接口与继承 Thread 类定义线程的区别

线程的生命周期

线程的生命周期指的是从线程的创建到启动直到结束。

java 线程的 6 种状态

注意: 这里说的是 java 线程的状态,并非操作系统的线程状态

Thread 类中通过枚举定义了线程的状态

public enum State {
   
    NEW,

    RUNNABLE,

    BLOCKED,

    WAITING,
  
    TIMED_WAITING,

    TERMINATED;
}
扩展

操作系统中线程的5中状态

线程调度

操作系统会给每个线程分配时间片, 在某一时刻只执行一个时间片的线程。每个java程序启动后, jvm会自动帮我们创建两个线程, 一个是main, 一个是GC

线程调度的实现方式

java 线程分类

用户线程

也称非守护线程, jvm会在所有非守护线程结束后随之离开

守护线程

也称作后台线程, 当进程中的所有 非后台线程 结束后, 后台线程也会随之结束。

线程安全问题

出现线程不安全的条件

  1. 必须存在两个或者两个以上的线程。

  2. 多个线程共享着一个资源,而且操作资源的代码有多句。

解决办法

1. 同步代码块

使用 synchronized 修饰代码块, 如下所示

public  void methodA() {
    synchronized (this){
        // doSomething
    }
}

注意的事项:

2. 同步函数

使用synchronized修饰该函数则称作为同步函数, 如下所示。

public synchronized void methodA() {
    // doSomething        
}

注意的事项:

推荐使用: 同步代码块

  1. 同步代码块的锁对象可以由我们自己指定,同步函数的锁对象是固定的。

  2. 同步代码块可以随意指定那个范围需要被同步,而同步函数必须是整个函数都同步, 代码不灵活。

死锁

死锁出现的条件

如何解决

以上是“Java线程如何定义”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!

推荐阅读:
  1. java线程
  2. 详解Java线程堆栈

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

java

上一篇:用什么命令可以查看docker容器占用的资源

下一篇:怎么通过重启路由的方法切换IP地址

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》