A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© hehe04 中级黑马   /  2012-8-31 23:55  /  2269 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

这两个方法都可以开启线程,究竟有什么区别呢???
麻烦说详细点,谢谢


评分

参与人数 1技术分 +1 收起 理由
郑文 + 1

查看全部评分

5 个回复

倒序浏览
Thead.start() 开启线程同时调用run方法;
而Thead.run()仅仅是调用了run方法,并没有开启线程,程序运行时依然是单线程

评分

参与人数 1技术分 +1 收起 理由
郑文 + 1

查看全部评分

回复 使用道具 举报
尤洋 发表于 2012-9-1 08:23
Thead.start() 开启线程同时调用run方法;
而Thead.run()仅仅是调用了run方法,并没有开启线程,程序运行时 ...

也就是说 如果我在UI线程中run,  还是和直接调用方法一回事?
回复 使用道具 举报
Thread.start()是调用系统底层东西打开线程,并且调用run()方法,
而Thead.run()跟普通的方法调用一样,还是单线程,

评分

参与人数 1技术分 +1 收起 理由
郑文 + 1

查看全部评分

回复 使用道具 举报
run()方法,用于封装线程运行的任务代码。直接用创建的线程对象调用,
并没有产生新的线程,仅仅是当前正在运行的线程(如,主线程)在执行run方法.

start()方法,共有两个作用,1,开启了当前线程,也就是说,
当前程序又多了一条执行路径和当前线程(主线程)并发执行。
而run()方法会被新开启的线程运行。

评分

参与人数 1技术分 +1 收起 理由
郑文 + 1

查看全部评分

回复 使用道具 举报
原帖地址:http://java.itcast.cn/news/721e01a5/c902/4b84/93b7/fa225c6a43cf.shtml
run()方法,用于封装线程运行的任务代码。直接用创建的线程对象调用,
并没有产生新的线程,仅仅是当前正在运行的线程(如,主线程)在执行run方法.

start()方法,共有两个作用,1,开启了当前线程,也就是说,
当前程序又多了一条执行路径和当前线程(主线程)并发执行。
而run()方法会被新开启的线程运行。

评分

参与人数 1技术分 +1 收起 理由
郑文 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马