黑马程序员技术交流社区

标题: 怎么判断一个程序是单线程还是多线程? [打印本页]

作者: 王虎    时间: 2012-10-17 12:02
标题: 怎么判断一个程序是单线程还是多线程?
是不是只要涉及Thread类或者Runnable接口的程序都是多线程?怎么区分
单线程和多线程的状态内容一样吗?
作者: 严海荣    时间: 2012-10-17 12:36
看有没有 实现Runnable接口的 run方法,这个run方法内写的内容就是多线程执行的内容。
一般用 start()方法调用run(),主函数是一条线程,运行运行出现了Thread类,创建Thread类的对象,
接受实现Runnable接口的子类对象,然后调用start方法就可以运行多线程了,同时主函数是继续往下执行的。

还有种是线程池产生线程 Exectors.newSingleThread() 或 定时器 Executors.newScheduledThreadPool(1) 的方法
也可以产生线程,他们的共同点都是会运行  new Runnable(){  public  void run(){...}  } 这个。
作者: 吴硕    时间: 2012-10-17 12:40
本帖最后由 吴硕 于 2012-10-17 12:47 编辑

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

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

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




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2