Android : Java中创建线程的几种方式_简单应用

主方法 MainTest.java

java 复制代码
package com.example.mythread;

import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.FutureTask;

public class MainTest {

    public static void main(String[] data){
//        以下的方法的线程并发执行
        //执行线程一
        ExtendsThread extendsThread = new ExtendsThread();
        // 1.执行线程中的方法
        extendsThread.getData();
        // 2. 或者 启动线程
        extendsThread.start();

        try {
            Thread.sleep(1000);
        } catch (InterruptedException e) {
            throw new RuntimeException(e);
        }

        //执行线程二
        Runnable runnable = new RunnableThread();
        Thread thread2 = new Thread(runnable);
        //1 启动线程
        thread2.start();



        //执行线程三 实现Callable接口和Future创建线程
        Callable<String> callable = new CallableThread();
        FutureTask<String> futureTask = new FutureTask<>(callable);

        Thread thread3 = new Thread(futureTask);
        thread3.start();
        try {
            //获取线程返回值
            System.out.println(futureTask.get());

        } catch (Exception e) {
            e.printStackTrace();
        }


        try {
            Thread.sleep(1000);
        } catch (InterruptedException e) {
            throw new RuntimeException(e);
        }

        // Lambda表达式简化写法
        //扩展 函数式接口 创建线程
        Thread thread4 = new Thread(() ->{
            System.out.println("扩展函数式接口的输出");
        });
        thread4.start();

        //扩展 Runnable函数式接口 创建线程
        Runnable runnable2 =()->{
            System.out.println("扩展Runnable函数式接口的输出");
        };
        new Thread(runnable2).start();

        // 扩展 Callable 函数式接口
        Callable<String> c = () ->{
            System.out.println("扩展线程开始运行");
            //线程暂停3秒 表示业务处理啥的
            Thread.sleep(3000);

            System.out.println("扩展线程执行完成");

            return "Callable接口实现返回的字符串";
        };
        //启动线程
        //new Thread(new FutureTask<String>(c)).start();
        FutureTask<String> futureTask2 = new FutureTask<String>(c);
        new Thread(futureTask2).start();
        try {
            //输出返回数据
            System.out.println(futureTask2.get());
        } catch (Throwable e) {
            e.printStackTrace();
        }

        //
        new Thread(){
            @Override
            public void run() {
                super.run();
                System.out.println("线程中的输出");
            }
        }.start();
    }
}

方式一:写个类继承Thread ExtendsThread.java

java 复制代码
package com.example.mythread;
// 方式一 写个类 extends Thread
public class ExtendsThread extends Thread{
    @Override
    public void run() {
        super.run();
        //调用方法
        getData();
    }

    public void getData(){
        System.out.println("方式一:我是线程中的输出");
    }
}

方式二: 写个类实现 Runnable接口 RunnableThread.java

java 复制代码
package com.example.mythread;
//创建线程方式二 实现 Runnable  接口
public class RunnableThread implements Runnable{

    @Override
    public void run() {
        //调用方法
        getData();
    }

    public void getData(){
        System.out.println("方式二:我是线程中的输出");
    }
}

方式三 写个类实现Callable接口和Future创建线程 CallableThread.java

java 复制代码
package com.example.mythread;

import java.util.concurrent.Callable;

// 方式三 实现Callable接口和Future创建线程
public class CallableThread implements Callable<String> {

    @Override
    public String call() throws Exception {
        getData();
        return "要返回的数据";
    }
    public void getData(){
        System.out.println("方式三:我是线程中的输出");
    }
}
相关推荐
慕y2746 分钟前
Java学习第十五部分——MyBatis
java·学习·mybatis
A__tao9 分钟前
SQL 转 Java 实体类工具
java·数据库·sql
喝可乐的布偶猫14 分钟前
Java类变量(静态变量)
java·开发语言·jvm
TDengine (老段)38 分钟前
TDengine STMT2 API 使用指南
java·大数据·物联网·时序数据库·iot·tdengine·涛思数据
喝可乐的布偶猫1 小时前
韩顺平之第九章综合练习-----------房屋出租管理系统
java·开发语言·ide·eclipse
Code季风1 小时前
深入理解微服务中的服务注册与发现(Consul)
java·运维·微服务·zookeeper·架构·go·consul
光军oi1 小时前
java微服务(Springboot篇)——————IDEA搭建第一个Springboot入门项目
java·spring boot·微服务
江太翁1 小时前
mediapipe流水线分析 三
android·mediapipe
与火星的孩子对话2 小时前
Unity进阶课程【六】Android、ios、Pad 终端设备打包局域网IP调试、USB调试、性能检测、控制台打印日志等、C#
android·unity·ios·c#·ip
future14122 小时前
C#每日学习日记
java·学习·c#