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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王虎 中级黑马   /  2012-10-17 12:02  /  9546 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

是不是只要涉及Thread类或者Runnable接口的程序都是多线程?怎么区分
单线程和多线程的状态内容一样吗?

评分

参与人数 1技术分 +1 收起 理由
唐志兵 + 1 赞一个!

查看全部评分

3 个回复

倒序浏览
看有没有 实现Runnable接口的 run方法,这个run方法内写的内容就是多线程执行的内容。
一般用 start()方法调用run(),主函数是一条线程,运行运行出现了Thread类,创建Thread类的对象,
接受实现Runnable接口的子类对象,然后调用start方法就可以运行多线程了,同时主函数是继续往下执行的。

还有种是线程池产生线程 Exectors.newSingleThread() 或 定时器 Executors.newScheduledThreadPool(1) 的方法
也可以产生线程,他们的共同点都是会运行  new Runnable(){  public  void run(){...}  } 这个。

评分

参与人数 1技术分 +1 收起 理由
韩军博 + 1 很给力!

查看全部评分

回复 使用道具 举报
本帖最后由 吴硕 于 2012-10-17 12:47 编辑

对于继承Thread类:
每执行一次子类实例的start()方法,产生一个线程

对于实现Runnable接口:
需要创建Thread类实例,并把实现接口作为参数传进去
每执行一次Thread类实例的start()方法,产生一个线程

评分

参与人数 1技术分 +1 收起 理由
韩军博 + 1 很给力!

查看全部评分

回复 使用道具 举报
单线程的也就是程序执行时,所跑的程序路径(处理的东西)是连续顺序下来的,必须前面的处理好,后面的彩绘执行到。         多线程嘛,举个例子也就是说程序可以同时执行2个以上相同类似的操作,比如一些搜索代理或者群发email的多线程软件,由于操作一次需要网络的返回信息   花的时间比较长,而对cpu来说却是空闲的,如果是一个一个顺序执行,那么搜索几千个IP就会花上好久好久。   而如果用多线程就可以在等待期间   加入其他的搜索,然后等待,这样可以提高效率。         不过多线程和多进程公用一些资源时要考虑的问题好像也是一样的,,对于一些公共资源或者公共变量的访问和修改时要注意特别的,   需要一些锁定什么的,还有顺序问题的考虑。   

评分

参与人数 1技术分 +1 收起 理由
韩军博 + 1 神马都是浮云

查看全部评分

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