美文网首页Java基础
Java线程的创建和启动

Java线程的创建和启动

作者: 不知名bzm | 来源:发表于2017-04-26 22:56 被阅读72次

Java中创建线程有3种方式,直接上代码。

// 继承Thread类,重写run()方法
public class ThreadTest extends Thread {

    private int i;

    // 重写run方法
    @Override
    public void run() {
        for (; i < 20; i++) {
            System.out.println(getName() + " " + i);
        }
    }
}

对应的调用方式

new ThreadTest().start();

该方法

  • 劣势:已经继承了Thread类,不能再继承其他父类
  • 优势:编写简单,访问当前线程可以直接使用this
// 实现Runnable接口,实现run()方法
class ThreadRunnableTest implements Runnable {
    private int i;

    @Override
    public void run() {
        for (; i < 20; i++) {
            System.out.println(Thread.currentThread().getName() + "" + i);
        }
    }
}

对应的调用方式

ThreadRunnableTest runnableTest = new ThreadRunnableTest();
new Thread(runnableTest, "thread----1---").start();

该方法优劣势见方法3

// 实现Callable<T>接口,实现call()方法
// 可以设置有返回值,并抛出异常
class ThreadCallableTest implements Callable<Integer> {

    // 类似上面的run方法内容
    @Override
    public Integer call() throws Exception {
        int i = 0;
        for (; i < 10; i++) {
            System.out.println(Thread.currentThread().getName() + " " + i);
        }
        return i;
    }
}

对应的调用方式

ThreadCallableTest threadCallableTest = new ThreadCallableTest();
FutureTask<Integer> task = new FutureTask<Integer>(threadCallableTest);
new Thread(task, "task--1--").start(); // 此处的task作为线程的target
// 打印返回值
try {
      System.out.println("task return:" + task.get());
} catch (Exception e) {
      e.printStackTrace();
}

该方法

  • 优势:实现接口,还可以继承其他类;
    多个线程共享同一个target对象,适合多个相同线程来处理同一份资源;
  • 劣势:编程稍微复杂,如果需要访问当前线程,必须使用Thread.currentThread()方法

相关文章

  • 三. Java并发基础知识

    创建和启动Java线程 Java线程也是一个对象,与任何其他Java对象一样。线程是类 java.lang.Thr...

  • 【多线程】NSThread

    1️⃣创建和启动线程简单说明 一个NSThread对象就代表一条线程 创建、启动线程 主线程相关用法 其他用法 创...

  • 线程的创建和启动方式

    线程的创建和启动方式   Java使用Thread代表线程,所有的线程对象都必须是Thread类或其子类的实例。每...

  • 多线程 ---- NSThread和线程安全

    创建和启动线程 一个NSThread对象就代表一条线程 主线程相关方法 其他方法 获得当前线程 线程的名字 其他创...

  • iOS 多线程--NSThread

    一、创建和启动线程 一个 NSThread 对象代表一条线程。 创建和启动线程 主线程相关用法 获得当前线程 线程...

  • 创建线程和启动线程

    创建和启动线程,传统有两种方式:方式1、继承Thread类;方式2、实现Runnable接口; 线程类(java....

  • Java线程的创建和启动

    Java中创建线程有3种方式,直接上代码。 对应的调用方式 该方法 劣势:已经继承了Thread类,不能再继承其他...

  • iOS 多线程-NSThread

    1. 创建和启动线程 创建、启动线程 2. 其他创建线程方式 创建线程后自动启动线程[NSThread detac...

  • 3、并发编程-Java线程

    并发编程 Java线程 创建和运行线程 查看线程 线程API 线程状态 创建和运行线程 方法一,直接使用new T...

  • Quartz 源码解析(五) —— QuartzSchedule

    大概内容 QuartzSchedulerThread 线程的创建和启动 线程run()方法逻辑 线程的协作 线程的...

网友评论

    本文标题:Java线程的创建和启动

    本文链接:https://www.haomeiwen.com/subject/efbwzttx.html