java中什么叫做线程?什么叫多线程?多线程的特点是什么

java中什么叫做线程?什么叫多线程?多线程的特点是什么,第1张

1、在 Java 中,线程是一个独立的执行路径。换句话说,一个线程是一个程序中的单独的执行环境,它可以并行地运行和其他线程。

2、多线程指的是在一个程序中,有多个线程在并行地运行。

3、多线程的一个特点是它们可以共享程序的资源,这样可以更有效地利用程序的资源,例如处理器时间和内存。此外,多线程还可以使程序更响应,因为在一个线程中运行的任务可以在另一个线程中进行,而不会导致程序“假死”。

java中多线程的实现方式有两种,一种是继承java.lang.Thread类,另一种是实现java.lang.Runnable接口。下面是两种方式的简单代码。继承Thread类方式:import java.lang.Thread//用集成Thread类方式实现多线程。 public class Test{ public static void main(String arg[]){ T t1=new T()T t2=new T()//更改新线程名称 t1.setName("t1")t2.setName("t2")//启动线程 t1.start()t2.start()} } class T extends Thread{ //重写run()方法 public void run(){ System.out.println(this.getName())} }输出结果为:t1t2实现Runnable接口方式:在使用Runnable接口时需要建立一个Thread实例。因此,无论是通过Thread类还是Runnable接口建立线程,都必须建立Thread类或它的子类的实例。import java.lang.*//用实现Runnable接口的方式实现多线程。 public class Test{ public static void main(String arg[]){ T t1=new T()T t2=new T()//一定要实例化Thread对象,将实现Runnable接口的对象作为参数传入。 Thread th1=new Thread(t1,"t1")Thread th2=new Thread(t2,"t2")//启动线程 th1.start()th2.start()} } class T implements Runnable{ //重写run()方法 public void run(){ System.out.println(Thread.currentThread().getName())} }输出结果为:t1t2public void run()方法是JAVA中线程的执行体方法,所有线程的操作都是从run方法开始,有点类似于main()方法,即主线程。

线程对象是可以产生线程的对象。比如在Java平台中Thread对象,Runnable对象。线程,是指正在执行的一个指点令序列。在java平台上是指从一个线程对象的start()开始,运行run方法体中的那一段相对独立的过程。相比于多进程,多线程的优势有:

(1)进程之间不能共享数据,线程可以;

(2)系统创建进程需要为该进程重新分配系统资源,故创建线程代价比较小;

(3)Java语言内置了多线程功能支持,简化了java多线程编程。

一、创建线程和启动

(1)继承Thread类创建线程类

通过继承Thread类创建线程类的具体步骤和具体代码如下:

• 定义一个继承Thread类的子类,并重写该类的run()方法;

• 创建Thread子类的实例,即创建了线程对象;

• 调用该线程对象的start()方法启动线程。

复制代码

class SomeThead extends Thraad {

public void run() {

//do something here

}

}

public static void main(String[] args){

SomeThread oneThread = new SomeThread()

步骤3:启动线程:

oneThread.start()

}

复制代码

(2)实现Runnable接口创建线程类

通过实现Runnable接口创建线程类的具体步骤和具体代码如下:

• 定义Runnable接口的实现类,并重写该接口的run()方法;

• 创建Runnable实现类的实例,并以此实例作为Thread的target对象,即该Thread对象才是真正的线程对象。

复制代码

class SomeRunnable implements Runnable {

public void run() {

//do something here

}

}

Runnable oneRunnable = new SomeRunnable()

Thread oneThread = new Thread(oneRunnable)

oneThread.start()

复制代码

(3)通过Callable和Future创建线程

通过Callable和Future创建线程的具体步骤和具体代码如下:

• 创建Callable接口的实现类,并实现call()方法,该call()方法将作为线程执行体,并且有返回值。

• 创建Callable实现类的实例,使用FutureTask类来包装Callable对象,该FutureTask对象封装了该Callable对象的call()方法的返回值。

• 使用FutureTask对象作为Thread对象的target创建并启动新线程。

• 调用FutureTask对象的get()方法来获得子线程执行结束后的返回值其中,Callable接口(也只有一个方法)定义如下:

复制代码

public interface Callable {

V call() throws Exception

}

步骤1:创建实现Callable接口的类SomeCallable(略)

步骤2:创建一个类对象:

Callable oneCallable = new SomeCallable()

步骤3:由Callable创建一个FutureTask对象:

FutureTask oneTask = new FutureTask(oneCallable)

注释: FutureTask是一个包装器,它通过接受Callable来创建,它同时实现了 Future和Runnable接口。

步骤4:由FutureTask创建一个Thread对象:

Thread oneThread = new Thread(oneTask)

步骤5:启动线程:

oneThread.start()


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/209881.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-04
下一篇2023-04-04

发表评论

登录后才能评论

评论列表(0条)

    保存