多线程的几种实现方式

作者&投稿:寇阙 (若有异议请与网页底部的电邮联系)
多线程有几种实现方法,都是什么?同步有几种实现方法,都是什么~

视频讲解的是Java面向对象编程语言中关于多线程方面的知识,重点讲解了同步方法和同步代码块的使用比较,同步方法是粗粒度的线程同步,同步代码块是细粒度的。

java中实现多线程常用的方法有以下三种:
/** * 方法一:继承Thread类,重写run方法 * * @author qd * */public class MyThread extends Thread { @Override public void run() { super.run(); }}/** * 方法二:实现Runnable接口,,重写run方法 * * @author qd * */class MyThread1 implements Runnable { @Override public void run() { }}/** * 方法三:实现Callable接口,重写call方法 * 优点:可以传参数,有返回值类型(参数与返回值类型一致) * * @author qd * */class MyThread2 implements Callable { @Override public Integer call() throws Exception { return null; }}

1、继承Thread类创建线程
Thread类本质上是实现了Runnable接口的一个实例,代表一个线程的实例。启动线程的唯一方法就是通过Thread类的start()实例方法。start()方法是一个native方法,它将启动一个新线程,并执行run()方法。这种方式实现多线程很简单,通过自己的类直接extend Thread,并复写run()方法,就可以启动新线程并执行自己定义的run()方法。例如:

public class MyThread extends Thread {  
  public void run() {  
   System.out.println("MyThread.run()");  
  }  
}  
 
MyThread myThread1 = new MyThread();  
MyThread myThread2 = new MyThread();  
myThread1.start();  
myThread2.start();

2、实现Runnable接口创建线程
如果自己的类已经extends另一个类,就无法直接extends Thread,此时,可以实现一个Runnable接口,如下:

public class MyThread extends OtherClass implements Runnable {  
  public void run() {  
   System.out.println("MyThread.run()");  
  }  
}

为了启动MyThread,需要首先实例化一个Thread,并传入自己的MyThread实例:

MyThread myThread = new MyThread();  
Thread thread = new Thread(myThread);  
thread.start();

事实上,当传入一个Runnable target参数给Thread后,Thread的run()方法就会调用target.run(),参考JDK源代码:

public void run() {  
  if (target != null) {  
   target.run();  
  }  
}

3、实现Callable接口通过FutureTask包装器来创建Thread线程

Callable接口(也只有一个方法)定义如下:

public interface Callable<V>   { 
  V call() throws Exception;   
 }
public class SomeCallable<V> extends OtherClass implements Callable<V> {

    @Override    public V call() throws Exception {        // TODO Auto-generated method stub
        return null;
    }

}
Callable<V> oneCallable = new SomeCallable<V>();   
//由Callable<Integer>创建一个FutureTask<Integer>对象:   
FutureTask<V> oneTask = new FutureTask<V>(oneCallable);   
//注释:FutureTask<Integer>是一个包装器,它通过接受Callable<Integer>来创建,它同时实现了Future和Runnable接口。 
  //由FutureTask<Integer>创建一个Thread对象:   
  Thread oneThread = new Thread(oneTask);   
  oneThread.start();   
//至此,一个线程就创建完成了。



多线程实现的四种方式
这四种方式是继承Thread类、实现Runnable接口、实现Callable接口、使用线程池。1、继承Thread类:通过继承Thread类并重写run()方法来实现多线程。2、实现Runnable接口:通过实现Runnable接口并重写run()方法,然后将Runnable对象作为参数传递给Thread类的构造器来实现多线程。3、实现Callable接口:通过实现Callable接...

在多线程编程中,线程的执行方式通常是
3. ForkJoin框架 通过ForkJoinPool实现并行流,Java8中的并行流和lambda构成并发计算的强大工具。需要掌握函数编程概念,并行流的具体实现决定了线程使用情况。默认使用ForkJoinPool.commonPool,由JVM管理。适用于并行处理小型程序,但需要预见可能产生的问题。4. Actor模型 将一切都视为actor,actor是计算实...

java 中有几种方法可以实现一个线程?用什么关键字修饰同步方法? stop...
有两种实现方法,分别使用new Thread()和new Thread(runnable)形式,第一种直接调用 thread 的run 方法,所以,我们往往使用Thread 子类,即new SubThread()。第二种调 用runnable 的run 方法。有两种实现方法,分别是继承Thread 类与实现Runnable 接口 用synchronized 关键字修饰同步方法 反对使用stop(),...

创建线程的几种方式
三、通过Callable和Future创建线程 (1)创建Callable接口的实现类,并实现call()方法,该call()方法将作为线程执行体,并且有返回值。(2)创建Callable实现类的实例,使用FutureTask类来包装Callable对象,该FutureTask对象封装了该Callable对象的call()方法的返回值。(3)使用FutureTask对象作为Thread对象的tar...

多线程实现的四种方式
多线程实现的四种方式Thread裸线程、Executor服务、ForkJoin框架、Actor模型。1、Thread裸线程 线程是并发最基本的单元。Java线程本质上被映射到操作系统线程,并且每个线程对象对应着一个计算机底层线程。每个线程有自己的栈空间,它占用了JVM进程空间的指定一部分。线程的接口相当简明,你只需要提供一个Runnable...

创建线程有哪几种方式
从继承Thread类和实现Runnable接口可以看出,上述两种方法都不能有返回值,且不能声明抛出异常。而Callable接口则实现了此两点,Callable接口如同Runable接口的升级版,其提供的call()方法将作为线程的执行体,同时允许有返回值。但是Callable对象不能直接作为Thread对象的target,因为Callable接口是 Java 5 新增...

java有几种实现线程的方式?
(2)实现Runnable接口,重写run函数 开启线程:Thread t = new Thread(对象)\/\/创建线程对象t.start() (3)实现Callable接口,重写call函数 Callable是类似于Runnable的接口,实现Callable接口的类和实现Runnable的类都是可被其它线程执行的任务。 已赞过 已踩过< 你对这个回答的评价是? 评论 收起 为...

多线程的三种常见实现方式
多线程有三种常见的实现方式:1. 继承Thread类,重写run方法。2. 实现Runnable接口,重写run方法。3. 通过实现Callable接口和使用FutureTask包装器来实现线程 \/ 通过自己的类直接继承(extend) Thread,并复重写run()方法,就可以通过Thread类的start()方法启动线程,并执行自己定义的run()方法。Thread...

JAVA多线程有哪几种实现方式
JAVA多线程实现方式主要有三种:继承Thread类、实现Runnable接口、使用ExecutorService、Callable、Future实现有返回结果的多线程。其中前两种方式线程执行完后都没有返回值,只有最后一种是带返回值的。1、继承Thread类实现多线程继承Thread类的方法尽管被我列为一种多线程实现方式,但Thread本质上也是实现了...

java怎么实现线程
1、继承Thread类创建线程 Thread类本质上是实现了Runnable接口的一个实例,代表一个线程的实例。启动线程的唯一方法就是通过Thread类的start()实例方法。start()方法是一个native方法,它将启动一个新线程,并执行run()方法。这种方式实现多线程很简单,通过自己的类直接extend Thread,并复写run()方法,就...

仙桃市15287025274: 多线程有几种实现方法 -
缪鸣复方: Thread 类 ThreadPool类 异步方法; Timer并不是多线程.它只是一定的时间间隔后从新执行某方法,但是还是在一个线程上

仙桃市15287025274: 实现多线程有几种方式 -
缪鸣复方: java创建线程的方式有三种 第一种是继承Thread类 实现方法run() 不可以抛异常 无返回值 第二种是实现Runnable接口 实现方法run() 不可以抛异常 无返回值 第三种是实现Callable接口,接口中要覆盖的方法是 publiccall() 注意:此方法...

仙桃市15287025274: 实现多线程都有哪几种方法 -
缪鸣复方: 1:UI线程.这个线程是操作系统自动创建的,你画了个winform,那么程序一启动,自然有了这么个线程.值得注意的是,你添加一个Timer控件,现实的多线程,实际上,依然在UI线程里.只是定时被Timer夺去控制权而已,本质上依然是单线程...

仙桃市15287025274: 多线程有几种实现方案,分别是哪几种 -
缪鸣复方: 多线程有两种实现方法,分别是继承Thread类与实现Runnable接口 同步的实现方面有两种,分别是synchronized,wait与notify

仙桃市15287025274: java多线程都有几种方式实现?? -
缪鸣复方: 有三种:(1)继承Thread类,重写run函数创建:class xx extends Thread{public void run(){Thread.sleep(1000) //线程休眠1000毫秒,sleep使线程进入Block状态,并释放资源}}开启线程:对象.start() //启动线程,run函数运行(2)实...

仙桃市15287025274: 创建多线程有几种方法 -
缪鸣复方: 1、通过继承Thread类创建线程 (1).首先定义一个类去继承Thread父类,重写父类中的run()方法.在run()方法中加入具体的任务代码或处理逻辑. (2).直接创建一个ThreadTest类的对象,也可以利用多态性,变量声明为父类的类型. (3)....

仙桃市15287025274: 多线程有几种实现方法,都是什么?同步有几种实现方法,都是什么? -
缪鸣复方: 实现线程有两种 继承Thread类或者实现Runnable接口... 实现同步也有两种,一种是用同步方法,一种是用同步块.. 同步方法就是在方法返回类型后面加上synchronized, 比如:public void synchronized add(){...} 同步块就是直接写:synchronized (这里写需要同步的对象){...}

仙桃市15287025274: 多线程有几种实现方法,都是什么?
缪鸣复方: 多线程有两种实现方法:继承Thread类,实现Runable接口

仙桃市15287025274: JAVA多线程有哪几种实现方式 -
缪鸣复方: JAVA多线程实现方式32313133353236313431303231363533e78988e69d8331333365643030主要有三种:继承Thread类、实现Runnable接口、使用ExecutorService、Callable、Future实现有返回结果的多线程.其中前两种方式线程执行完后...

仙桃市15287025274: java中实现多线程的方法有几种以及如何实现多线程 -
缪鸣复方: 1. 继承Thread类,然后重写run方法2. 实现Runnable接口,实现run方法 这是最常用的实现多线程的方式

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网