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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

我现在的看毕老师关于线程的视频,发现线程好像就是执行另外的代码一样而已,那怎么实现那种可以减少任务执行总时间的东西啊,比如我要加1到10000的总和,假如一个线程做这个功能的话是10秒,那10个线程做,怎么才能做到比10秒少的功能啊,我看就是在run方法里面写代码而已,但是另外的线程怎么也执行那些功能啊,。
还有,多线程是不是可以执行一些并发操作啊。没有搞懂,
我看一般的编程任务里面也没有用到多线程啊,

6 个回复

倒序浏览
masai158 来自手机 高级黑马 2014-9-6 18:43:42
沙发
cpu同一时刻,只能运行一个线程!假如使用2个线程,(每一个线程负责计算一部分的话!)累加就行了!
回复 使用道具 举报
你要操作同一资源,多线程也没用啊。。。。多线程我觉得就是多了几天实现目标的方法,比如你卖火车票开了多个窗口,而不是一个窗口,但是那票!还是一张张卖的!总不能两个窗口一起卖同一张票。
你要想缩短时间。我觉得只能搞多核了吧。。。多核不太懂
回复 使用道具 举报
1.线程是指进程中的一个执行流程,一个进程中可以运行多个线程。比如java.exe进程中可以运行很多线程。线程总是属于某个进程,进程中的多个线程共享进程的内存。“同时”执行是人的感觉,在线程之间实际上轮换执行的。
2.要实现多线程,可以选择继承Thread或者实现Runnable接口。其实Thread也是实现Runnable接口的,看源码:
  1. class Thread implements Runnable {
  2.     //…
  3. public void run() {
  4.         if (target != null) {
  5.              target.run();
  6.         }
  7.         }
  8. }
复制代码
其实Thread中的run方法调用的是Runnable接口的run方法,可以看出Thread和Runnable都实现了run方法,这种操作模式其实就是代理模式
Thread和Runnable的区别:
如果一个类继承Thread,则不适合资源共享。但是如果实现了Runable接口的话,则很容易的实现资源共享。你可以写一个卖火车票的代码试试运行效果。
3.当然可以在一个线程里再运行一个线程了,建议看下这篇文章,对你会有帮助的!http://www.cnblogs.com/yshb/archive/2012/06/15/2550367.html


回复 使用道具 举报
线程还可以用在某些会调用阻塞方法的代码里。
回复 使用道具 举报
多线程并不能提高效率的,CPU只是来回的切换而已,线程多了反而会降低效率
回复 使用道具 举报
1到10000的总和,只能是把这个东西分成几段然后每段来开启一个线程这样每个线程值运行自己的那部分代码,cpu来不停的来回切换估计这个例子看不出多线程的效果。
并发操作就是同时运行的意思   
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马