博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java 多线程,Thread,Runnable,Callable
阅读量:4704 次
发布时间:2019-06-10

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

1. 什么是线程?

  一个程序同时执行多个任务,每一个任务称为一个线程。

2. 怎么创建线程?

    2.1 创建线程的方式

    1)  实现Runnable接口,并实现run()方法.     2)  继承Thread类,并且重写run()方法.     3)  实现Callable接口,并实现call()方法.     2.2 创建线程      1)通过实现Runnable接口的方式:       由于Runnable接口是一个函数式接口,所以在此可以用lambda表达式的方式来实现这个接口.
Runnable runnable = () -> {            for (int i = 0;i < 20;i++){                System.out.println("Thread_1," + i);            }        };

      2)通过继承Thread类的方式:

class Thread_2 extends Thread{            @Override            public void run() {                for (int i = 0;i < 20;i++){                    System.out.println("Thread_2," + i);                    }            }        }

      3)通过实现Callable接口的方式:

class Thread_3 implements Callable
{ @Override public StringBuilder call() throws Exception { StringBuilder sb = new StringBuilder("Thread_3,"); for (int i = 0;i < 20;i++){ sb.append(Integer.toString(i)); System.out.println("Thread_3," + i); } return sb; } }

        此方式也可以用lambda表达式的方式直接实例化一个线程。

        这种方式是支持返回值的,Callable<T> 中的泛型就是这个线程的返回值,不写默认返回null。

      2.3 启动线程

        前两种创建线程的启动方式是t.start();

        第三种的启动方式是t.call(),同时带有返回值。

Thread t1 = new Thread(runnable);        Thread_2 t2 = new Thread_2();        Thread_3 t3 = new Thread_3();        t1.start();        t2.start();        try {            String thread3Result = t3.call().toString();            System.out.println("Thread_3 :" + thread3Result);        } catch (Exception e) {            e.printStackTrace();        }

 

转载于:https://www.cnblogs.com/lovleo/p/11317395.html

你可能感兴趣的文章
小甲鱼OD学习第1讲
查看>>
HDU-1085 Holding Bin-Laden Captive-母函数
查看>>
php提示undefined index的几种解决方法
查看>>
LRJ
查看>>
Struts2环境搭建
查看>>
Linux: Check version info
查看>>
stl学习之测试stlen,cout等的运行速度
查看>>
魔戒三曲,黑暗散去;人皇加冕,光明归来
查看>>
Error和Exception
查看>>
Python和Singleton (单件)模式[转载]
查看>>
httpclient设置proxy与proxyselector
查看>>
IT常用单词
查看>>
拓扑排序
查看>>
NYOJ--32--SEARCH--组合数
查看>>
JMS
查看>>
gulpfile 压缩模板
查看>>
【34.14%】【BZOJ 3110】 [Zjoi2013]K大数查询
查看>>
【 henuacm2016级暑期训练-动态规划专题 A 】Cards
查看>>
第五篇:白话tornado源码之褪去模板的外衣
查看>>
设备常用框架framework
查看>>