java创建线程的三种方式-阿里云开发者社区

开发者社区> 似水的流年> 正文

java创建线程的三种方式

简介:
+关注继续查看
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.FutureTask;

public class NewThreadDemo {

    public static void main(String[] args) throws InterruptedException, ExecutionException {
        //第一种方式
        Thread t1 = new Thread(){
            
            @Override
            public void run() {
                System.out.println("new Thread 1");//输出:new Thread 1
            }
        };//创建线程
        
        t1.start();//启动线程
        System.out.println(t1.getName());//输出:Thread-0
        
        //第二种方式
        Thread t2 = new Thread(new Runnable() {
            
            @Override
            public void run() {
                System.out.println("new Thread 2");//输出:new Thread 2
            }
        });
        
        t2.start();

        System.out.println(Thread.currentThread().getName());//输出:main
        
        
        //第三种方式
        FutureTask<String> ft = new FutureTask<String>(new Callable<String>() {
            
            @Override
            public String call() throws Exception {
                System.out.println("new Thread 3");//输出:new Thread 3
                return "aaaa";
            }
        });
        
        Thread t3 = new Thread(ft);
        t3.start();
        String result = ft.get();
        System.out.println(result);//输出:aaaa
        
    }
}

首先要明白什么是线程?
明白线程之前要明白什么是进程?
进程是什么呢?  进程是计算机中运行的一个应用程序.
线程:执行该进程的逻辑单元.  线程是用来执行进程的.
Java中万物皆对象,线程也被描述成了一个对象就是Thread对象.
Java对多线程的支持也是特别完善的,特别是JDK1.5之后.
首先明白什么是线程? 什么是进程?
进程就是计算机中运行的一个应用程序.    线程就是执行该进程的逻辑单元.
线程管理:
         创建线程的方式:
                   1.继承Thread类,并复写run方法,创建该类对象,调用start方法开启线程。
                   2.实现Runnable接口,复写run方法,创建Thread类对象,将Runnable子类对象传递给Thread类对象。调用start方法开启线程。
                   第二种方式好,将线程对象和线程任务对象分离开。降低了耦合性,利于维护
                   3.创建FutureTask对象,创建Callable子类对象,复写call(相当于run)方法,将其传递给FutureTask对象(相当于一个Runnable)。
                   创建Thread类对象,将FutureTask对象传递给Thread对象。调用start方法开启线程。这种方式可以获得线程执行完之后的返回值。


第三种使用Runnable功能更加强大的一个子类.这个子类是具有返回值类型的任务方法.
第一种和第二种两种方式是run()方法运行完是没有返回值的.
线程的信息: 

public class ThreadInfo {
    public static void main(String[] args) {
        Thread t1 = new Thread(new Runnable() {
            
            @Override
            public void run() {
                synchronized (ThreadInfo.class) {
                    System.out.println("Thread");
                }
            }
        });
        
        t1.start();
        
        System.out.println(t1.getId());
        System.out.println(t1.getName());
        System.out.println(t1.getPriority());//优先级 1-10
        System.out.println(t1.getState());//线程状态: NEW TERMINATED RUNNABLE TIMED_WAITING WAITING BLOCKED
    }
}

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
IOS多线程之线程的创建
版权声明:原创作品,谢绝转载!否则将追究法律责任。   之前也说过线程是消耗资源的。多线程会占用你应用程序(和系统的)的内存使用和性能方面的资源。我们创建一个线程后可以对他的一些部分进行配置例如可以对辅助线程分配堆空间的大小。
762 0
《VMware Virtual SAN权威指南》一3.10.6 磁盘组创建示例
本节书摘来华章计算机《VMware Virtual SAN权威指南》一书中的第3章 ,第3.10.6节, [美] 科马克·霍根(Cormac Hogan)邓肯·埃平(Duncan Epping)  著 徐 炯 译译更多章节内容可以访问云栖社区“华章计算机”公众号查看。
991 0
java实战晋级技巧(二)Java三种获得class的方式
java实战晋级技巧(二)Java三种获得class的方式
5 0
javascript中创建对象的几种方式
原文:javascript中创建对象的几种方式 javascript中提供了通过Object构造函数或对象字面量方式来创建单个的对象,当我们想要创建很多对象的时候,简单的通过这两种方法就会产生大量的重复。
959 0
js中使用Java的方式
1. 使用DWR框架  2. 使用AJAX方式
617 0
【Android NDK 开发】JNI 线程 ( JNI 线程创建 | 线程执行函数 | 非 JNI 方法获取 JNIEnv 与 Java 对象 | 线程获取 JNIEnv | 全局变量设置 )
【Android NDK 开发】JNI 线程 ( JNI 线程创建 | 线程执行函数 | 非 JNI 方法获取 JNIEnv 与 Java 对象 | 线程获取 JNIEnv | 全局变量设置 )
19 0
创建SinaSAE云账号创建和发布基于SVN代码管理的PHP空工程
1、使用Sina微博账号登录,进入【新浪云控制台】 2、选择【云应用SAE】界面,选择【创建新应用】 3、点击【继续创建】,进入应用信息编辑界面     依次编辑“二级域名”“应用程序名”,再点【运行环境】中的【PHP空应用】,再点左下角的【创建应用】完成应用创建。
846 0
使用IntelliJ IDEA 14和Maven创建java web项目
原文:使用IntelliJ IDEA 14和Maven创建java web项目 http://mark.leanote.com/post/%E4%BD%BF%E7%94%A8IntelliJ-IDEA-14%E5%92%8CMaven%E5%88%9B%E5%BB%BAjava-web%E9%A1%B9%E7%9B%AE 安装Maven 下载安装 去maven官网下载最新版。
1283 0
+关注
似水的流年
开发工程师O(&cap;_&cap;)O
136
文章
385
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载