前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >java创建线程的三种方式

java创建线程的三种方式

作者头像
似水的流年
发布2019-12-07 20:36:43
5310
发布2019-12-07 20:36:43
举报
文章被收录于专栏:电光石火电光石火
代码语言:javascript
复制
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()方法运行完是没有返回值的. 线程的信息: 

代码语言:javascript
复制
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
    }
}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-01-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档