Java:多线程
创始人
2025-05-30 16:59:39
0

Java多线程

  • 1.如何创建一个线程?
    • 1.1继承Thread类
    • 1.2实现Runnable接口
    • 1.3实现Callable接口
    • 1.4使用线程池
  • 2.线程有几种状态?

1.如何创建一个线程?

Java提供多种方式创建线程

  • 继承Thread类,重新写run方法
  • 实现Runnable接口,重新run方法
  • 实现Callable接口,重新call方法
  • 使用线程池

1.1继承Thread类

import lombok.extern.slf4j.Slf4j;
import org.junit.Test;@Slf4j
public class MyTest {@Testpublic void test() {MyThread myThread=new MyThread();myThread.start();}
}@Slf4j
class MyThread extends Thread {@Overridepublic void run() {log.info("自定义线程");}
}

1.2实现Runnable接口

import lombok.extern.slf4j.Slf4j;
import org.junit.Test;@Slf4j
public class MyTest {@Testpublic void test() {MyThread myThread = new MyThread();Thread thread = new Thread(myThread);thread.start();}
}@Slf4j
class MyThread implements Runnable {@Overridepublic void run() {log.info("自定义线程");}
}

import lombok.extern.slf4j.Slf4j;
import org.junit.Test;@Slf4j
public class MyTest {@Testpublic void test() {Thread thread = new Thread(new Runnable() {@Overridepublic void run() {log.info("自定义线程");}});thread.start();}
}

import lombok.extern.slf4j.Slf4j;
import org.junit.Test;@Slf4j
public class MyTest {@Testpublic void test() {Thread thread = new Thread(() -> log.info("自定义线程"));thread.start();}
}

1.3实现Callable接口

import lombok.extern.slf4j.Slf4j;
import org.junit.Test;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.FutureTask;@Slf4j
public class MyTest {@Testpublic void test() {try {MyThread myThread = new MyThread();FutureTask futureTask = new FutureTask<>(myThread);Thread thread = new Thread(futureTask);//启动线程thread.start();//获取线程返回值String s = futureTask.get();log.info(s);} catch (InterruptedException | ExecutionException e) {e.printStackTrace();Thread.currentThread().interrupt();}}
}@Slf4j
class MyThread implements Callable {@Overridepublic String call() throws Exception {log.info("自定义线程");return "自定义线程执行完毕";}
}

1.4使用线程池

import lombok.extern.slf4j.Slf4j;
import org.junit.Test;
import java.util.concurrent.*;@Slf4j
public class MyTest {@Testpublic void test() {ExecutorService executorService = Executors.newSingleThreadExecutor();MyThread myThread=new MyThread();executorService.execute(myThread);}
}@Slf4j
class MyThread implements Runnable {@Overridepublic void run() {log.info("自定义线程");}
}

2.线程有几种状态?

线程主要包括以下几个状态:

  • new:创建成功,但还没有调用start方法
  • runnable:包括就绪状态和运行状态(线程拿到时间片就处于运行状态;没有拿到时间片就处于就绪状态)
  • blocked:阻塞状态
  • waiting:等待状态
  • timed-waiting:限时等待状态
  • terminated:终止状态

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
美团联名卡审核成功待激活(美团... 今天百科达人给各位分享美团联名卡审核成功待激活的知识,其中也会对美团联名卡审核未通过进行解释,如果能...
一帆风顺二龙腾飞三阳开泰祝福语... 本篇文章极速百科给大家谈谈一帆风顺二龙腾飞三阳开泰祝福语,以及一帆风顺二龙腾飞三阳开泰祝福语结婚对应...