文档章节

多线程-线程的创建方式

冯先手
 冯先手
发布于 2017/04/24 21:46
字数 291
阅读 8
收藏 1

进程:每一个程序的运行代表一个进行

线程:线程可以看作一个小的进程,一个进程中可以有多个线程,线程可以看作是进程的多条路径。

 

线程的创建方式有三种

1.继承Thread类 。

因为Thread 类是实现Runnable接口的。所以有run实现了run方法。

Class T1 extends Thread{

@Override

public void run (){

//TODO

}

}

T1 t = new T1();

t.start();

 

2.实现Runnable 接口 。 

public class T2 implements Runnable{

@Override

public void run (){

//TODO

}}}

Thread t2 = new Tread(

new Runnable() {
            @Override
            public void run() {
                for (int i = 0; i < 100; i++) {
                    System.out.println("implenments"+i);
                }
            }
        });

);

t2.start();

 

3.实现Callable接口 。 Callable相比其他线程之下能够在call()方法可以有返回值和可以抛出异常。

public class ThreadByCallable implements Callable<Integer> {
    
    @Override
    public Integer call() {
        System.out.println("当前线程名称是:" + Thread.currentThread().getName());

        int i = 0;
        for (; i < 5; i++) {
            System.out.println("循环变量i的值:" + i);
        }
        
        // call()方法有返回值
        return i;
    }

    public static void main(String[] args) {
        ThreadByCallable rt = new ThreadByCallable();

        // 使用FutureTask来包装Callable对象
        FutureTask<Integer> task = new FutureTask<Integer>(rt);
        new Thread(task, "有返回值的线程").start();
        try {
            // 获取线程返回值
            System.out.println("子线程的返回值:" + task.get());
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }
}

 

 

© 著作权归作者所有

共有 人打赏支持
冯先手
粉丝 2
博文 55
码字总数 19465
作品 0
私信 提问
多线程(一)

进程和线程的概述 进程就是应用程序在内存中分配的空间,也可理解为一个正在执行中的程序。每一个进程执行都有一个执行顺序,该顺序就是一个执行路径或者叫一个控制单元。 线程就是进程中负责...

yerenyuan_pku
2017/10/08
0
0
java实现多线程两种基本方式

我们在开发当中经常会使用到多线程,这里我们来写两个小案例通过最基本的两种方式继承Thread类或实现Runnable接口来实现一个多线程。 继承Thread类 我们可以通过继承Thread类,并重写run()方...

王子城
2018/11/13
0
0
iOS开发值多线程简单介绍

今天,我们就来说一下iOS多线程的问题,为什么要使用iOS多线程?因为一个应用程序在一个时间内可能有一个呗或者多任务,我们不可能都放在主线程当中执行,这样会大大的降低程序的运行效率.所以就需...

云上飞飞
2016/07/08
1
0
JAVA多线程实现的三种方式

最近在做代码优化时学习和研究了下JAVA多线程的使用,看了菜鸟们的见解后做了下总结。 1.JAVA多线程实现方式 JAVA多线程实现方式主要有三种:继承Thread类、实现Runnable接口、使用ExecutorS...

JasonO
2016/03/08
126
0
Java多线程基础篇(02)-多线程的实现

1.概要 JAVA多线程实现方式主要有三种:继承Thread类、实现Runnable接口、使用ExecutorService、Callable、Future实现有返回结果的多线程。其中前两种方式线程执行完后都没有返回值,只有最后...

kukudeku
2016/09/19
41
0

没有更多内容

加载失败,请刷新页面

加载更多

dockerfile 镜像构建(1)

通用dockerfile 利用已经编译好的.jar 来构建镜像。要构建的目录如下: [root@iZuf61quxhnlk9m2tkx16cZ demo_jar]# docker build -t demo:1 . 运行镜像: [root@iZuf61quxhnlk9m2tkx16cZ de...

Canaan_
11分钟前
0
0
Redis radix tree源码解析

Redis实现了不定长压缩前缀的radix tree,用在集群模式下存储slot对应的的所有key信息。本文将详述在Redis中如何实现radix tree。 核心数据结构 raxNode是radix tree的核心数据结构,其结构体...

阿里云云栖社区
14分钟前
3
0
vue import 传入变量

在做动态添加component的时候,传入变量就会报错,出现以下错误信息: vue-router.esm.js?fe87:1921 Error: Cannot find module '@/components/index'. at eval (eval at ./src/components ......

朝如青丝暮成雪
16分钟前
0
0
Flutter开发 Dio拦截器实现token验证过期的功能

前言: 之前分享过在Android中使用Retrofit实现token失效刷新的处理方案,现在Flutter项目也有“token验证过期”的需求,所以接下来我简单总结一下在Flutter项目中如何实现自动刷新token并重...

EmilyWu
17分钟前
5
0
final Map可以修改内容,final 常量不能修改

1.final Map 可以put元素,但是不可以重新赋值 如: final Map map = new HashMap(); map = new HashMap();//不可以 因为栈中变量map引用地址不能修改 2.final str = “aa”; str = "bb";/......

qimh
20分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部