什么是线程

简介: 什么是线程

线程是进程内独立运行的一个单位,而进程他可以由一个或者多个线程组成,但是一个线程只能对应一个进程。

如何创建线程

创建线程有继承Thread类、实现Runnable接口或者通过Callable和Future创建线程三种方法,具体创建过程如下。 本文来源于公众号:【Java学习提升】 专注于Java领域技术分享,Java知识体系学习、分享面试经验,让我们结伴而行,共同成长!

1、继承Thread类

下面我们通过代码来看下继承Thread类创建线程的具体步骤:

首先我们需要定义一个类来集成Thread类,继承过后需要重写Thread类的run()方法,代码如下:

然后我们调用该线程类对象的start()方法来启动线程,代码如下:

运行结果如下:

2、实现Runnable接口

我们还可以通过实现Runnable接口来创建线程类,具体如下:

首先我们需要创建一个类来实现Runnable接口,同样我们也需要重写run()方法

然后我们创建Runnable实现类的对象,把这个实现类的对象作为Thread类的target对象来创建线程,最后得到的Thread类的对象才是真正的线程对象,运行start()方法来启动线程

结果如下:

3、通过Callable和Future创建线程

首先创建一个类实现Callable接口,并且重写call()方法

然后使用FutureTask来包装MyCallable对象,同样和上面一样把FutureTask类的对象作为Thread类的target对象来创建线程并用start()方法来启动。

通过上面的例子我们发现,已经不是重写run()方法而是重写call()方法,并且还能自定义返回值,另外还有一个值得注意的问题是FutureTask实际上是实现了Runnable类并且也继承了Future接口,很显然FutureTask具有这两者的双重特征。

相关文章
|
6月前
|
Java Linux API
线程的认识
线程的认识
|
6月前
|
存储 安全 Java
C++线程浅谈
C++线程浅谈
|
6月前
|
C#
C#线程初步
C#线程初步
34 0
|
算法 NoSQL Java
02.关于线程你必须知道的8个问题(上)
大家好,我是王有志,欢迎来到《Java面试都问啥?》。 今天我们来一起看看在面试中,关于线程各大公司大都喜欢问哪些问题。
102 1
02.关于线程你必须知道的8个问题(上)
|
Java Linux 程序员
04.关于线程你必须知道的8个问题(下)
大家好,我是王有志。今天是Java面试中线程问题的最后一部分内容,包括我们来聊同步与互斥,线程的本质,调度,死锁以及线程的优缺点等问题。
110 1
04.关于线程你必须知道的8个问题(下)
|
Java Linux 调度
03.关于线程你必须知道的8个问题(中)
大家好,我是王有志,欢迎来到《Java面试都问啥?》。我们书接上回,继续聊Java面试中关于线程的问题。
72 1
03.关于线程你必须知道的8个问题(中)
|
C++
C++ | C++线程
c++创建线程的方式不止一种。
116 0
|
PyTorch 算法框架/工具 Python
几个常用线程的
1 OMP_NUM_THREADS=1 export OMP_NUM_THREADS 在服务器上跑PyTorch 程序的列位不要把cpu占满 修改这个环境变量降低你们的cpu使用率 (因为pytorch默认是能用多少线程就用多少的) 在python代码中: # 选择显卡 os.
5864 0