Java-第三篇3种创建的线程方式

1、Java使用Thread类代表线程,所有的线程对象必须是Thread类或其子类的实例。

当线程继承Thread类时,直接使用this即可获取当前线程,Thread对象的getName()方法返回当前线程的名字,因此可以直接调用getName()方法返回当前线程的名字。

Thread.currentThread():该方法总是返回当前正在执行的线程对象。

2、创建线程方式1:继承Thread类创建线程类

这种方式创建线程的步骤一般为:

1》定义Thread类的子类,并重写该类的run()方法,该方法作为线程的线程执行体。

2》创建Thread子类的实例,即线程对象。

3》调用线程对象的start()方法启动线程。

3、创建线程方式2:实现Runnable接口

这种方式创建线程的步骤一般为:

1》定义Runnable接口的实现类,并重写该接口的run()方法,该run()方法的方法体同样是该线程的线程执行体。

2》创建Runnable接口实现类的实例,并将该实例作为Thread的target来创建Thread对象,该Thread对象才是真正的线程对象。本质是Thread对象负责执行实现类对象的run()方法体。

3》调用线程对象的start()方法来启动该线程。

4、使用Callable和Future创建线程:创建有返回值的线程

这种方式创建线程的步骤一般为:

1》创建Callable接口的实现类,并实现call()方法,该方法作为线程执行体,且该方法有返回值。然后创建该实现类的实例。

2》使用FutureTask类来包装Callable对象,该FutureTask对象封装了该Callable对象的call()方法的返回值。

3》使用FutureTask对象作为Thread对象的target创建并启动新线程。

4》调用FutureTask对象的get()方法获取子线程执行结束后的返回值。

原文地址:https://www.cnblogs.com/ZeroMZ/p/11361193.html

时间: 2024-10-24 10:27:30

Java-第三篇3种创建的线程方式的相关文章

java核心学习(二十一) 多线程---创建启动线程的三种方式

本节开始java多线程编程的学习,对于操作系统.进程.线程的基本概念不再赘述,只是了解java对于多线程编程的支持有哪些. 一.继承Thread类来创建线程 java语言中使用Thread类来代表线程,代表线程的类可以通过继承Thread类并重写run()方法来实现多线程开发,调用线程类实例的start方法来启动该线程.下面来试一试 package ThreadTest; public class FirstThread extends Thread{ private int i; public

创建执行线程方式三:实现Callable接口

Callable接口 ① Java 5.0 在 java.util.concurrent 提供了一个新的创建执行 线程的方式:Callable 接口② Callable 接口类似于 Runnable,两者都是为那些其实例可 能被另一个线程执行的类设计的. 但是 Runnable 不会返 回结果,并且无法抛出经过检查的异常.③ Callable 需要依赖FutureTask ,FutureTask 也可以用作闭 锁 TestCallable package com.aff.juc; import

java基础提高篇——对象的创建

我一直使用构造器的方式生成或者初始化对象.最近发现一些对象在项目中并没有实际作用,有时我只是需要它的一些功能,为此新建一个对象是不是比较消耗资源,影响程序的性能呢.今天看到一些资料,对这个问题作出了一个回答. 说明: 首先肯定的是,我们有时候并不需要一个类的全部功能,或许我们需要的只是其中的一两个方法,没必要为此新建一个类.静态方法解决了这个问题.静态方法应该成为每个面向对象设计程序者必修课程.首先我们学习静态方法创建对象. 使用静态工厂的方式产生对象的好处有这样几个好处:"一:静态方法都有名字

(一)Python入门-2编程基本概念:13字符串-Unicode字符集-三种创建字符串的方式-len()

一:字符串基本特点 很多人初学编程时,总是担心自己数学不行,潜意识里认为数学好才能编程.实际上, 大多数程序员打交道最多的是“字符串”而不是“数字”.因为,编程是用来解决现实问题 的,因此逻辑思维的重要性远远超过数学能力. 字符串的本质是:字符序列.Python的字符串是不可变的,我们无法对原字符串做任何修改.但,可以将字符串的一部分复制到新创建的字符串,达到“看起来修改”的效果. Python不支持单字符类型,单字符也是作为一个字符串使用的.Python中字符串是基本数据类型. 二:字符串的编

java中多线程的两种创建方式

一丶继承Thread类实现多线程 第一步:继承Thread类第二步:重写run()方法第三步:创建继承了Thread类的对象 , 调用start()方法启动. //线程创建方式一 : /* 第一步:继承Thread类 第二步:重写run()方法 第三步:创建继承了Thread类的对象 , 调用start()方法启动. */ public class TestThread extends Thread{ @Override public void run() { for (int i = 0; i

Spring框架几种创建bean的方式

Spring框架下,Bean的创建和装配非常的灵活,提供了三种主要的方式,并且相互见可以互相看见,也就是你可以随意地采用你喜欢且合适的方式创建Bean,而不用担心他们之间的兼容问题. 一.使用XML显示配置Bean 在Spring框架最初的是,XML是最主要的配置方式.在XML中创建Bean需要使用<bean>元素,例如 <bean class= "man.BigMan" /> 这是一个最简单的XML方式的Bean声明,仅指定了该Bean属于的类,那么它的名称是

String变量的两种创建方式

在java中,有两种创建String类型变量的方式: String str01="abc";//第一种方式 String str02=new String("abc")://第二种方式 第一种方式创建String变量时,首先查找JVM方法区的字符串常量池是否存在存放"abc"的地址,如果存在,则将该变量指向这个地址,不存在,则在方法区创建一个存放字面值"abc"的地址. 第二种方式创建String变量时,在堆中创建一个存放&q

JVM最多可创建多少线程

JVM可支持的最大线程数 JVM最大线程数 (2012-07-04 23:20:15) 转载▼ 标签: jvm 最大线程数 it 分类: java分布式总结 摘自:http://sesame.iteye.com/blog/622670 工作中碰到过这个问题好几次了,觉得有必要总结一下,所以有了这篇文章,这篇文章分为三个部分:认识问题.分析问题.解决问题. 一.认识问题: 首先我们通过下面这个 测试程序 来认识这个问题:运行的环境 (有必要说明一下,不同环境会有不同的结果):32位 Windows

Android--AIDL,一种实现进程间通信的方式

一.什么是AIDL AIDL:Android Interface Definition Language,即Android接口定义语言,是我们实现IPC的一种常用手段. 我们知道,Android系统中的进程之间不能共享内存,因此,需要提供一些机制在不同进程之间进行数据通信.为了使其他的应用程序也可以访问本应用程序提供的服务,Android系统采用了远程过程调用(Remote Procedure Call,RPC)方式来实现.与很多其他的基于RPC的解决方案一样,Android使用一种接口定义语言