JAVA多线程实现的两种方式

简介:

java多线程实现方式主要有两种:继承Thread类、实现Runnable接口

1、继承Thread类实现多线程

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

public class MaYi extends Thread {
    String name;    public MaYi(String name){        this.name = name;
    }    public void run(){        while(true){            try {
                Thread.sleep(1000);//等待1秒
            } catch (InterruptedException e) {
                
                e.printStackTrace();
            }
            System.out.println(name+"蚂蚁正在下载......");
        }
    }
}

 

启动线程:

    public static void main1(String[] args) {
        MaYi m1 = new MaYi("1号");
        m1.start();
        MaYi m2 = new MaYi("2号");
        m2.start();

 

2、实现Runnable接口方式实现多线程

如果自己的类已经继承另一个类,就无法直接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();  
  }  
}

本文转自帅气的头头博客51CTO博客,原文链接http://blog.51cto.com/12902932/1947570如需转载请自行联系原作者

sshpp
相关文章
|
8月前
|
消息中间件 存储 负载均衡
Java多线程基础-9:代码案例之阻塞队列(一)
阻塞队列是一种遵循先进先出原则的线程安全数据结构,它在队列满时会阻塞入队操作,队列空时会阻塞出队操作,常用于多线程间的协作,简化同步代码编写。Java中提供了`BlockingQueue`接口及其实现类,如`ArrayBlockingQueue`和`LinkedBlockingQueue`,用于实现生产者-消费者模型,以实现负载均衡和资源的有效利用,如削峰填谷,降低系统压力。
90 0
|
8月前
|
存储 安全 Java
Java多线程基础-9:代码案例之阻塞队列(二)
Java多线程基础教程系列中,介绍了如何实现一个简单的阻塞队列(非泛型版本)。
70 0
|
8月前
|
Java Spring
基于Java多线程处理数据
【4月更文挑战第9天】 基于Java多线程处理数据
|
8月前
|
消息中间件 NoSQL Java
java多线程基础
随着Redis数据库的广泛应用,它在服务器端应用程序中的作用越来越重要。Redis具有快速读写、数据持久化、发布订阅、事务处理等诸多特性,而这些特性使得它在处理高并发、实时数据操作等方面表现出色。然而,单纯使用Redis还不足以满足一些复杂业务逻辑的需求。在这种情况下,Lua脚本成为了Redis的一个重要补充。本文将详细介绍Redis与Lua脚本的结合应用。
75 5
|
设计模式 监控 Java
Java多线程基础
Java多线程基础
70 0
|
Java
高并发编程-自定义简易的线程池(2),体会原理
高并发编程-自定义简易的线程池(2),体会原理
75 0
|
Java
高并发编程-自定义简易的线程池(1),体会原理
高并发编程-自定义简易的线程池(1),体会原理
88 0
|
存储 缓存 安全
Java多线程基础汇总(下)
Java多线程基础汇总(下)
65 0
|
安全 Java 编译器
Java多线程基础汇总(上)
Java多线程基础汇总(上)
129 0
|
Java
Java多线程(超详细+大量代码)
程序:一段静态的代码 进程:运行中的代码 线程:程序的一种执行路径
2314 0

热门文章

最新文章