博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java创建线程的三种方式
阅读量:7044 次
发布时间:2019-06-28

本文共 2564 字,大约阅读时间需要 8 分钟。

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
ft = new FutureTask
(new Callable
() { @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    }}

转载地址:http://rhhal.baihongyu.com/

你可能感兴趣的文章
Centos7 安装redis服务
查看>>
SQL Server-聚焦ROW_NUMBER VS TOP N性能
查看>>
微信小程序 常见问题 小结
查看>>
少用数字来作为参数标识含义
查看>>
不错位的java .class 反编译工具推荐
查看>>
SQLServer 数据库镜像+复制切换方案
查看>>
平安科技移动开发二队技术周报(第十五期)
查看>>
build.gradle & gradle.properties
查看>>
windows server2008服务器下XAMPP集成环境配置apache的SSL证书:
查看>>
JS中同步与异步的理解
查看>>
Django Rest Framework(分页、视图、路由、渲染器)
查看>>
总是容易忘记:enum、int、string之间的快速转换
查看>>
002-localStorage和sessionStorage操作
查看>>
Deepin-添加path
查看>>
设计模式-行为型模式,观察者模式(13)
查看>>
Win8 Metro(C#)数字图像处理--2.41彩色图像密度分割算法
查看>>
Intellij IDEA查看所有断点
查看>>
Top K算法
查看>>
CentOs6.7 python2.6升级到2.7.11
查看>>
JavaBridge
查看>>