线程的创建及线程的状态

一:创建多线程

方法一:继承Thread类
可以通过继承 Thread 来创建一个线程类,该方法的好处是 this 代表的就是当前线程,不需要通过
Thread.currentThread() 来获取当前线程的引用。

class MyThread extends Thread {
  @Override
  public void run() {
    System.out.println("这里是线程运行的代码");
 }
}
MyThread t = new MyThread();
t.start(); // 线程开始运行

方法二:实现Runnable接口
通过实现 Runnable 接口,并且调用 Thread 的构造方法时将 Runnable 对象作为 target 参数传入来创建线程对象。该方法的好处是可以规避类的单继承的限制;但需要通过 Thread.currentThread() 来获取当前线程的引用

class MyRunnable implements Runnable {
  @Override
  public void run() {
    System.out.println(Thread.currentThread().getName() + "这里是线程运行的代码");
 }
}
Thread t = new Thread(new MyRunnable());
t.start(); // 线程开始运行

二:线程的状态

参考与:https://blog.csdn.net/RookiexiaoMu_a/article/details/88625960?ops_request_misc=%7B%22request_id%22%3A%22158189170219725247642062%22%2C%22scm%22%3A%2220140713.130056874…%22%7D&request_id=158189170219725247642062&biz_id=0&utm_source=distribute.pc_search_result.none-task
在这里插入图片描述
NEW:线程对象对象刚被创建,执行start()之前。
RUNNABLE:线程可以在java虚拟机中运行的状态,可能正在运行自己代码,也可能没有,这取决于操作系统处理器
BLOCKED: 当一个线程试图获取一个对象锁,而该对象锁被其他的线程持有,则该线程进入Blocked状态;当该线程持有锁时,该线程将变成Runnable状态。
WAITING: 一个线程在等待另一个线程执行一个(唤醒)动作时,该线程进入Waiting状态。进入这个状态后是不能自动唤醒的,必须等待另一个线程调notify或者notifyAll方法才能够唤醒。
TIMED_WAITING:同waiting状态,有几个方法有超时参数,调用他们将进入TimedWaiting状态。这一状态将一直保持到超时期满或者接收到唤醒通知。带有超时参数的常用方法有Thread.sleep、Object.wait。
TERMINATED: 因为run方法正常退出而死亡,或者因为没有捕获的异常终止了run方法而死亡

发布了46 篇原创文章 · 获赞 2 · 访问量 1875

猜你喜欢

转载自blog.csdn.net/zhanghongkai0916/article/details/104383207