博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
如何正确的创建线程
阅读量:7210 次
发布时间:2019-06-29

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

一、什么是线程?

在我们编写的程序中,代码从main函数一行一行的执行,这就是一个线程,而且是主线程。

多线程就是同时存在多条路线进行执行,好比于百米赛跑,多个跑道上的运动员一起跑步争取冠军。

二、创建线程的两种方式

run方法会在调用start()方法之后被执行,为什么?(请告知),所以我们要继承重载run()方法。

1、通过扩展Thread类来创建多线程(重载 run 方法)

//创建Thread类的子类,是一个匿名类,重载run方法         Thread thread1 =new Thread(){             @Override            public void run() {                while(true){                    try {                        Thread.sleep(500);                    } catch (Exception e) {                        // TODO Auto-generated catch block                        e.printStackTrace();                    }                    System.out.println(Thread.currentThread().getName());                }            }         };

2、实现Runnalbe接口,重载Runnalbe接口中的run()方法。

1、为什么要实现 Runnable  接口,我们看一段Thread的源代码:

/* 内部定义了一个Runnable的变量:target. */    private Runnable target;/*构造方法来初始化Runable类型的target变量 */ public Thread(Runnable target) {        init(null, target, "Thread-" + nextThreadNum(), 0);    }/* 调用run 方法 */  @Override    public void run() {        if (target != null) {            target.run();        }    }

2、如何实现呢?

Thread thread2=new Thread(new Runnable() {            @Override            public void run() {                // TODO Auto-generated method stub                while(true){                    try {                        Thread.sleep(500);                    } catch (Exception e) {                        // TODO Auto-generated catch block                        e.printStackTrace();                    }                    System.out.println(Thread.currentThread().getName());                }            }        });

3、总结

两种方法实现,选择自己喜欢的一种,大部分选择第二种,主要符合Java面向对象的思想

 

转载于:https://www.cnblogs.com/lyajs/p/5638672.html

你可能感兴趣的文章
通过JS控制各种元素的点击事件的【时间间隔】,特别适合【发表评论】功能...
查看>>
话说TP框架里的Vendor这目录是干什么用的啊?类库扩展thinkphp3.1版本
查看>>
Android SDK与API版本的对应关系
查看>>
Elasticsearch yellow 意味着主分片可用,副本不可用
查看>>
Android开发实现QQ三方登录 标签: android开发qq三方登录
查看>>
2017 Multi-University Training Contest - Team 9 1004&&HDU 6164 Dying Light【数学+模拟】
查看>>
【Linux】使用xshell登陆时密码框为灰色,无法输入密码
查看>>
gradle平级项目引用
查看>>
win10应用开发——如何判断应用是在手机上运行还是电脑上运行
查看>>
一位10年程序员生涯的总结与经验忠告分享
查看>>
点击照片上传照片一
查看>>
[SF] Symfony 组件 BrowserKit 原理
查看>>
关于修改linux hostname的问题,尤其是redhat 7修改hostname的方式
查看>>
nginx服务器的负载均衡和动静分离(未完)
查看>>
php 处理ftp常用操作与方法
查看>>
nutz 结合QueryResult,Record 自定义分页查询,不构建pojo 整合
查看>>
Mac下安装Pyqt
查看>>
m-orchastration system
查看>>
Golang 微框架 Gin 简介
查看>>
redis 中 set 和 hset 有什么不同,什么时候使用 hset 什么时候使用set?
查看>>