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

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

hot3.png

1 继承Thread

2 实现Runnable借口

3 实现Callable(优势:可声明异常,可返回值)

package com.lzs.utils;import java.util.concurrent.*;/** * Created by zaish on 2016-3-19. * Callable构建线程(优势:可声明异常,可返回值) */public class Call {    public static void main(String[] args) throws ExecutionException, InterruptedException {        //创建线程        ExecutorService service= Executors.newFixedThreadPool(2);        Race tortaise=new Race("乌龟",1000);        Race rabbit=new Race("兔子",500);        //获取返回值        Future
 result1=service.submit(tortaise);        Future
 result2=service.submit(rabbit);        Thread.sleep(2000);        tortaise.setFlag(false);//停止线程体循环        rabbit.setFlag(false);        int num1=result1.get();        int num2=result2.get();        service.shutdown();        System.out.println(tortaise.getName()+"跑了-->"+tortaise.getStep());        System.out.println(rabbit.getName()+"跑了-->"+rabbit.getStep());    }}class Race implements Callable{    private String name;    private long time;    private int step=0;    private boolean flag=true;    public Race(){    }    public Race(String name){        super();        this.name=name;    }    public Race(String name,long time){        super();        this.time=time;    }    @Override    public Object call() throws Exception {        while (flag){            Thread.sleep(time);            step++;        }        return step;    }    public String getName() {        return name;    }    public long getTime() {        return time;    }    public int getStep() {        return step;    }    public boolean isFlag() {        return flag;    }    public void setName(String name) {        this.name = name;    }    public void setTime(long time) {        this.time = time;    }    public void setStep(int step) {        this.step = step;    }    public void setFlag(boolean flag) {        this.flag = flag;    }}

4 其他

转载于:https://my.oschina.net/firstBlooded/blog/643831

你可能感兴趣的文章
脚本安装dns和postfix
查看>>
xp系统安装后变成一个盘了别的盘的文件怎么找到
查看>>
thinkphp的mvc理解
查看>>
继承、抽象类
查看>>
yum搭建本地仓库、更换国内源、下载rpm包
查看>>
mysql多种安装方法
查看>>
记一次线上Java程序导致服务器CPU占用率过高的问题排除过程
查看>>
LoadRunner安装时提示.Net Framework 3.5 SP1问题
查看>>
电子器件的PCB封装图设计
查看>>
spark调优之开发调优
查看>>
vim的一些常用命令
查看>>
导购员不会告诉你的无线智能家居误区
查看>>
如何进入现在较火热的大数据领域,学习路线是什么?
查看>>
UI设计师需要掌握哪些知识点?
查看>>
Oracle客户端简易配置
查看>>
Oracle归档日志(一)
查看>>
ogg中Time Since Chkpt显示unknown解决方法
查看>>
从零开始免费为您的QQ邮件加把锁
查看>>
Codeforces Round #287 (Div. 2) ABCDE
查看>>
ubuntu 配置 vnc server(转)
查看>>