您现在的位置是:首页 > 文章详情

java创建线程的三种方式

日期:2018-09-09点击:366
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 } }
原文链接:https://yq.aliyun.com/articles/637361
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章