【求助】怎么依次执行线程?
比如我有5个线程A,B,C,D,E 我想依次执行它们 A跑完才能跑B B跑完才轮到C ..我特想知道concurrent这个包里是否有提供简便的方法去实现。。。 --------------------编程问答-------------------- Semaphore信号量 --------------------编程问答--------------------
用得着这么麻烦吗?
直接
A.run();
B.run();
C.run();
D.run();
E.run();
不就好了?
再多点就加个循环。
for (Thread i:threads){
i.run();
}
不要学会了锤子的用法,就看什么都像钉子。 --------------------编程问答--------------------
看清楚楼主的意思,是依次执行,执行完一个再执行下一个
run方法不会阻塞,虽然是依次调用,但是不保证依次执行
使用信号量吧,google一下,或参考Core Java I 的最后一章(这章专门将线程,看完之后对线程的理解就差不多了) --------------------编程问答--------------------
比如我有5个线程A,B,C,D,E 我想依次执行它们 A跑完才能跑B B跑完才轮到C ..
我特想知道concurrent这个包里是否有提供简便的方法去实现。。。
用得着这么麻烦吗?
直接
A.run();
B.run();
C.run();
D.run();
E.run();
不就好了?
再多点就加个循环。
for (Thread i:threads){
i.run();
}
不要学会了锤子的用法,就看什么都像钉子。
看清楚楼主的意思,是依次执行,执行完一个再执行下一个
run方法不会阻塞,虽然是依次调用,但是不保证依次执行
使用信号量吧,google一下,或参考Core Java I 的最后一章(这章专门将线程,看完之后对线程的理解就差不多了)
看清楚点 run()
不是 start()
只要这个run() 不扔异常出来,就是顺序执行的。而且楼主对异常处理也没提要求。
拜托你看一下Thead.java的源代码好吗?
不要自以为是。
顺便说一下,学java最好不要看教科书。
我几乎不看任何java教科书,看Java Docs,不明白的话看JDK 源码,
再不明白的话,看Java Lang Spec 和 VM Spec
还不明白,好吧你不用学了。
--------------------编程问答--------------------
比如我有5个线程A,B,C,D,E 我想依次执行它们 A跑完才能跑B B跑完才轮到C ..
我特想知道concurrent这个包里是否有提供简便的方法去实现。。。
用得着这么麻烦吗?
直接
A.run();
B.run();
C.run();
D.run();
E.run();
不就好了?
再多点就加个循环。
for (Thread i:threads){
i.run();
}
不要学会了锤子的用法,就看什么都像钉子。
看清楚楼主的意思,是依次执行,执行完一个再执行下一个
run方法不会阻塞,虽然是依次调用,但是不保证依次执行
使用信号量吧,google一下,或参考Core Java I 的最后一章(这章专门将线程,看完之后对线程的理解就差不多了)
看清楚点 run()
不是 start()
只要这个run() 不扔异常出来,就是顺序执行的。而且楼主对异常处理也没提要求。
拜托你看一下Thead.java的源代码好吗?
不要自以为是。
顺便说一下,学java最好不要看教科书。
我几乎不看任何java教科书,看Java Docs,不明白的话看JDK 源码,
再不明白的话,看Java Lang Spec 和 VM Spec
还不明白,好吧你不用学了。
的确我看错了,我承认,不过我没有任何讽刺你的意思
至于你后面说的那些,好的回复是:好的,听你的,我不学了,呵呵 --------------------编程问答-------------------- 用run直接执行就好了 --------------------编程问答-------------------- 那为什么要用多线程呢? --------------------编程问答--------------------
那为什么要用多线程呢?
同问~~~
这样一来,单线程就全部搞定了~ --------------------编程问答--------------------
那为什么要用多线程呢?
同问~~~
这样一来,单线程就全部搞定了~
楼主想问的意思可能是.....楼主可能不知道jion()。楼主需要的答案可能是:
--------------------编程问答-------------------- 单线程的东西就行。。。
A.start();
B.start();
A.jion();
B.jion();
如果一定要多线程,那么加sem。 --------------------编程问答-------------------- 多线程最大特点就是并发了,串行执行,就直接run()方法,不过这样就不属于多线程了,而是简单的成员方法调用。 --------------------编程问答-------------------- 使用线程池,设置corePoolSize 为1,能达到你的要求 --------------------编程问答--------------------
比如我有5个线程A,B,C,D,E 我想依次执行它们 A跑完才能跑B B跑完才轮到C ..
我特想知道concurrent这个包里是否有提供简便的方法去实现。。。
用得着这么麻烦吗?
直接
A.run();
B.run();
C.run();
D.run();
E.run();
不就好了?
再多点就加个循环。
for (Thread i:threads){
i.run();
}
不要学会了锤子的用法,就看什么都像钉子。
看清楚楼主的意思,是依次执行,执行完一个再执行下一个
run方法不会阻塞,虽然是依次调用,但是不保证依次执行
使用信号量吧,google一下,或参考Core Java I 的最后一章(这章专门将线程,看完之后对线程的理解就差不多了)
看清楚点 run()
不是 start()
只要这个run() 不扔异常出来,就是顺序执行的。而且楼主对异常处理也没提要求。
拜托你看一下Thead.java的源代码好吗?
不要自以为是。
顺便说一下,学java最好不要看教科书。
我几乎不看任何java教科书,看Java Docs,不明白的话看JDK 源码,
再不明白的话,看Java Lang Spec 和 VM Spec
还不明白,好吧你不用学了。
你好,我看了你的说明后,觉得你的回答不对,因为如果你调用run函数,在主函数里面不停的执行run函数,那么后面的代码就无法同时执行了,这就没有线程的意义了,你觉得了? --------------------编程问答--------------------
比如我有5个线程A,B,C,D,E 我想依次执行它们 A跑完才能跑B B跑完才轮到C ..
我特想知道concurrent这个包里是否有提供简便的方法去实现。。。
用得着这么麻烦吗?
直接
A.run();
B.run();
C.run();
D.run();
E.run();
不就好了?
再多点就加个循环。
for (Thread i:threads){
i.run();
}
不要学会了锤子的用法,就看什么都像钉子。
看清楚楼主的意思,是依次执行,执行完一个再执行下一个
run方法不会阻塞,虽然是依次调用,但是不保证依次执行
使用信号量吧,google一下,或参考Core Java I 的最后一章(这章专门将线程,看完之后对线程的理解就差不多了)
看清楚点 run()
不是 start()
只要这个run() 不扔异常出来,就是顺序执行的。而且楼主对异常处理也没提要求。
拜托你看一下Thead.java的源代码好吗?
不要自以为是。
顺便说一下,学java最好不要看教科书。
我几乎不看任何java教科书,看Java Docs,不明白的话看JDK 源码,
再不明白的话,看Java Lang Spec 和 VM Spec
还不明白,好吧你不用学了。
你好,我看了你的说明后,觉得你的回答不对,因为如果你调用run函数,在主函数里面不停的执行run函数,那么后面的代码就无法同时执行了,这就没有线程的意义了,你觉得了?
Hi,
我同意你的看法,循环调用5次run,结果是一个线程都没有启动,总在主线程中运行。不论楼主的需求是否合理,楼上的答案不满足要求。
实现楼主的需求,其实方法挺多的,楼上的几位都提到了,这里推荐http://www.ibm.com/developerworks/cn/java/j-lo-concurrent-frmk/文章,给楼主一点思路。
那位回答问题的同学口气太大,不看相关书籍作为自己的垫脚石,就能够读懂并且理解源代码?读不懂源代码就判刑不用学习了?源代码的精髓可不是只懂得语法的人能够理解的。先学习怎么做,再想想为什么。基础书籍铺路,源码扩展阅读,达到事倍功半的效果,这样也是学习方法之一。当然如果像那位同学一样有慧根,那真心不用听我废话了。
--------------------编程问答--------------------
比如我有5个线程A,B,C,D,E 我想依次执行它们 A跑完才能跑B B跑完才轮到C ..
我特想知道concurrent这个包里是否有提供简便的方法去实现。。。
用得着这么麻烦吗?
直接
A.run();
B.run();
C.run();
D.run();
E.run();
不就好了?
再多点就加个循环。
for (Thread i:threads){
i.run();
}
不要学会了锤子的用法,就看什么都像钉子。
看清楚楼主的意思,是依次执行,执行完一个再执行下一个
run方法不会阻塞,虽然是依次调用,但是不保证依次执行
使用信号量吧,google一下,或参考Core Java I 的最后一章(这章专门将线程,看完之后对线程的理解就差不多了)
看清楚点 run()
不是 start()
只要这个run() 不扔异常出来,就是顺序执行的。而且楼主对异常处理也没提要求。
拜托你看一下Thead.java的源代码好吗?
不要自以为是。
顺便说一下,学java最好不要看教科书。
我几乎不看任何java教科书,看Java Docs,不明白的话看JDK 源码,
再不明白的话,看Java Lang Spec 和 VM Spec
还不明白,好吧你不用学了。
你好,我看了你的说明后,觉得你的回答不对,因为如果你调用run函数,在主函数里面不停的执行run函数,那么后面的代码就无法同时执行了,这就没有线程的意义了,你觉得了?
楼主也没说调用者要跟另5个Thread并行。
即使楼主有这个需求,那也只需要另起一个线程,把for循环装进去即可。
麻烦你看看concurret 包里的源码好吗?
这个包提供如此丰富的作业调度机制,代码非常精妙,
可以看到作者从java代码层面深入考虑到CPU层面。
用来干楼主这么简单的需求,是不是杀鸡用牛刀,你自己判断。
concurret 包被这样滥用 Doug Lea 大概要哭了。
--------------------编程问答--------------------
比如我有5个线程A,B,C,D,E 我想依次执行它们 A跑完才能跑B B跑完才轮到C ..
我特想知道concurrent这个包里是否有提供简便的方法去实现。。。
用得着这么麻烦吗?
直接
A.run();
B.run();
C.run();
D.run();
E.run();
不就好了?
再多点就加个循环。
for (Thread i:threads){
i.run();
}
不要学会了锤子的用法,就看什么都像钉子。
看清楚楼主的意思,是依次执行,执行完一个再执行下一个
run方法不会阻塞,虽然是依次调用,但是不保证依次执行
使用信号量吧,google一下,或参考Core Java I 的最后一章(这章专门将线程,看完之后对线程的理解就差不多了)
看清楚点 run()
不是 start()
只要这个run() 不扔异常出来,就是顺序执行的。而且楼主对异常处理也没提要求。
拜托你看一下Thead.java的源代码好吗?
不要自以为是。
顺便说一下,学java最好不要看教科书。
我几乎不看任何java教科书,看Java Docs,不明白的话看JDK 源码,
再不明白的话,看Java Lang Spec 和 VM Spec
还不明白,好吧你不用学了。
你好,我看了你的说明后,觉得你的回答不对,因为如果你调用run函数,在主函数里面不停的执行run函数,那么后面的代码就无法同时执行了,这就没有线程的意义了,你觉得了?
Hi,
我同意你的看法,循环调用5次run,结果是一个线程都没有启动,总在主线程中运行。不论楼主的需求是否合理,楼上的答案不满足要求。
实现楼主的需求,其实方法挺多的,楼上的几位都提到了,这里推荐http://www.ibm.com/developerworks/cn/java/j-lo-concurrent-frmk/文章,给楼主一点思路。
那位回答问题的同学口气太大,不看相关书籍作为自己的垫脚石,就能够读懂并且理解源代码?读不懂源代码就判刑不用学习了?源代码的精髓可不是只懂得语法的人能够理解的。先学习怎么做,再想想为什么。基础书籍铺路,源码扩展阅读,达到事倍功半的效果,这样也是学习方法之一。当然如果像那位同学一样有慧根,那真心不用听我废话了。
不需要线程的地方去启动线程,你知道意味着什么?
年轻人,基础书籍跟Java一点关系也没用好吧。
想当年我也是买了一大堆所谓热门被很多人推荐的JAVA书,现在那些书还在我书架上,
每本书我倒是都看了,但每本书我最多只看了其中的5%。
看完的只有一本讲java语法的小册子,不到100页。
基础是什么?是操作系统,是计算机组成原理,是数据结构,是算法导论,是数学。
跟java一毛钱关系都没有。
看所谓java教材纯属浪费时间,翻译错误百出不说,
而且一点点简单的事情能翻来覆去讲半天,把读者当小白教,
外国教材作者有这个倾向,所以动不动一本书600多页,里面大多是废话。
基础扎实的话,看Doc,看源码学得绝对比看书快,不明白的地方动动手,有个项目做的话最好。
Lang Spec和VM Spec是终极解释,特别是VM Spec看完后绝对醍醐灌顶。
基础不扎实的话,去上大学。 --------------------编程问答--------------------
比如我有5个线程A,B,C,D,E 我想依次执行它们 A跑完才能跑B B跑完才轮到C ..
我特想知道concurrent这个包里是否有提供简便的方法去实现。。。
用得着这么麻烦吗?
直接
A.run();
B.run();
C.run();
D.run();
E.run();
不就好了?
再多点就加个循环。
for (Thread i:threads){
i.run();
}
不要学会了锤子的用法,就看什么都像钉子。
看清楚楼主的意思,是依次执行,执行完一个再执行下一个
run方法不会阻塞,虽然是依次调用,但是不保证依次执行
使用信号量吧,google一下,或参考Core Java I 的最后一章(这章专门将线程,看完之后对线程的理解就差不多了)
看清楚点 run()
不是 start()
只要这个run() 不扔异常出来,就是顺序执行的。而且楼主对异常处理也没提要求。
拜托你看一下Thead.java的源代码好吗?
不要自以为是。
顺便说一下,学java最好不要看教科书。
我几乎不看任何java教科书,看Java Docs,不明白的话看JDK 源码,
再不明白的话,看Java Lang Spec 和 VM Spec
还不明白,好吧你不用学了。
你好,我看了你的说明后,觉得你的回答不对,因为如果你调用run函数,在主函数里面不停的执行run函数,那么后面的代码就无法同时执行了,这就没有线程的意义了,你觉得了?
Hi,
我同意你的看法,循环调用5次run,结果是一个线程都没有启动,总在主线程中运行。不论楼主的需求是否合理,楼上的答案不满足要求。
实现楼主的需求,其实方法挺多的,楼上的几位都提到了,这里推荐http://www.ibm.com/developerworks/cn/java/j-lo-concurrent-frmk/文章,给楼主一点思路。
那位回答问题的同学口气太大,不看相关书籍作为自己的垫脚石,就能够读懂并且理解源代码?读不懂源代码就判刑不用学习了?源代码的精髓可不是只懂得语法的人能够理解的。先学习怎么做,再想想为什么。基础书籍铺路,源码扩展阅读,达到事倍功半的效果,这样也是学习方法之一。当然如果像那位同学一样有慧根,那真心不用听我废话了。
不需要线程的地方去启动线程,你知道意味着什么?
年轻人,基础书籍跟Java一点关系也没用好吧。
想当年我也是买了一大堆所谓热门被很多人推荐的JAVA书,现在那些书还在我书架上,
每本书我倒是都看了,但每本书我最多只看了其中的5%。
看完的只有一本讲java语法的小册子,不到100页。
基础是什么?是操作系统,是计算机组成原理,是数据结构,是算法导论,是数学。
跟java一毛钱关系都没有。
看所谓java教材纯属浪费时间,翻译错误百出不说,
而且一点点简单的事情能翻来覆去讲半天,把读者当小白教,
外国教材作者有这个倾向,所以动不动一本书600多页,里面大多是废话。
基础扎实的话,看Doc,看源码学得绝对比看书快,不明白的地方动动手,有个项目做的话最好。
Lang Spec和VM Spec是终极解释,特别是VM Spec看完后绝对醍醐灌顶。
基础不扎实的话,去上大学。
感谢老先生回复我的帖子。出于对您的尊重,我认真的回复您。 --------------------编程问答-------------------- 1.弄个线程池,设上池大小为1,把5个线程放到线程池里执行去吧.
2.更简单的看代码
--------------------编程问答--------------------
public SeqThread extends Thread{
public void run(){
a.run();
b.run();
c.run();
d.run();
e.run();
}
}
比如我有5个线程A,B,C,D,E 我想依次执行它们 A跑完才能跑B B跑完才轮到C ..
我特想知道concurrent这个包里是否有提供简便的方法去实现。。。
用得着这么麻烦吗?
直接
A.run();
B.run();
C.run();
D.run();
E.run();
不就好了?
再多点就加个循环。
for (Thread i:threads){
i.run();
}
不要学会了锤子的用法,就看什么都像钉子。
看清楚楼主的意思,是依次执行,执行完一个再执行下一个
run方法不会阻塞,虽然是依次调用,但是不保证依次执行
使用信号量吧,google一下,或参考Core Java I 的最后一章(这章专门将线程,看完之后对线程的理解就差不多了)
看清楚点 run()
不是 start()
只要这个run() 不扔异常出来,就是顺序执行的。而且楼主对异常处理也没提要求。
拜托你看一下Thead.java的源代码好吗?
不要自以为是。
顺便说一下,学java最好不要看教科书。
我几乎不看任何java教科书,看Java Docs,不明白的话看JDK 源码,
再不明白的话,看Java Lang Spec 和 VM Spec
还不明白,好吧你不用学了。
你好,我看了你的说明后,觉得你的回答不对,因为如果你调用run函数,在主函数里面不停的执行run函数,那么后面的代码就无法同时执行了,这就没有线程的意义了,你觉得了?
Hi,
我同意你的看法,循环调用5次run,结果是一个线程都没有启动,总在主线程中运行。不论楼主的需求是否合理,楼上的答案不满足要求。
实现楼主的需求,其实方法挺多的,楼上的几位都提到了,这里推荐http://www.ibm.com/developerworks/cn/java/j-lo-concurrent-frmk/文章,给楼主一点思路。
那位回答问题的同学口气太大,不看相关书籍作为自己的垫脚石,就能够读懂并且理解源代码?读不懂源代码就判刑不用学习了?源代码的精髓可不是只懂得语法的人能够理解的。先学习怎么做,再想想为什么。基础书籍铺路,源码扩展阅读,达到事倍功半的效果,这样也是学习方法之一。当然如果像那位同学一样有慧根,那真心不用听我废话了。
不需要线程的地方去启动线程,你知道意味着什么?
年轻人,基础书籍跟Java一点关系也没用好吧。
想当年我也是买了一大堆所谓热门被很多人推荐的JAVA书,现在那些书还在我书架上,
每本书我倒是都看了,但每本书我最多只看了其中的5%。
看完的只有一本讲java语法的小册子,不到100页。
基础是什么?是操作系统,是计算机组成原理,是数据结构,是算法导论,是数学。
跟java一毛钱关系都没有。
看所谓java教材纯属浪费时间,翻译错误百出不说,
而且一点点简单的事情能翻来覆去讲半天,把读者当小白教,
外国教材作者有这个倾向,所以动不动一本书600多页,里面大多是废话。
基础扎实的话,看Doc,看源码学得绝对比看书快,不明白的地方动动手,有个项目做的话最好。
Lang Spec和VM Spec是终极解释,特别是VM Spec看完后绝对醍醐灌顶。
基础不扎实的话,去上大学。
这种讨论看起来真是受益匪浅 哈哈 对我这种新手来说 真的很好,谢谢! --------------------编程问答--------------------
比如我有5个线程A,B,C,D,E 我想依次执行它们 A跑完才能跑B B跑完才轮到C ..
我特想知道concurrent这个包里是否有提供简便的方法去实现。。。
用得着这么麻烦吗?
直接
A.run();
B.run();
C.run();
D.run();
E.run();
不就好了?
再多点就加个循环。
for (Thread i:threads){
i.run();
}
不要学会了锤子的用法,就看什么都像钉子。
看清楚楼主的意思,是依次执行,执行完一个再执行下一个
run方法不会阻塞,虽然是依次调用,但是不保证依次执行
使用信号量吧,google一下,或参考Core Java I 的最后一章(这章专门将线程,看完之后对线程的理解就差不多了)
看清楚点 run()
不是 start()
只要这个run() 不扔异常出来,就是顺序执行的。而且楼主对异常处理也没提要求。
拜托你看一下Thead.java的源代码好吗?
不要自以为是。
顺便说一下,学java最好不要看教科书。
我几乎不看任何java教科书,看Java Docs,不明白的话看JDK 源码,
再不明白的话,看Java Lang Spec 和 VM Spec
还不明白,好吧你不用学了。
你好,我看了你的说明后,觉得你的回答不对,因为如果你调用run函数,在主函数里面不停的执行run函数,那么后面的代码就无法同时执行了,这就没有线程的意义了,你觉得了?
Hi,
我同意你的看法,循环调用5次run,结果是一个线程都没有启动,总在主线程中运行。不论楼主的需求是否合理,楼上的答案不满足要求。
实现楼主的需求,其实方法挺多的,楼上的几位都提到了,这里推荐http://www.ibm.com/developerworks/cn/java/j-lo-concurrent-frmk/文章,给楼主一点思路。
那位回答问题的同学口气太大,不看相关书籍作为自己的垫脚石,就能够读懂并且理解源代码?读不懂源代码就判刑不用学习了?源代码的精髓可不是只懂得语法的人能够理解的。先学习怎么做,再想想为什么。基础书籍铺路,源码扩展阅读,达到事倍功半的效果,这样也是学习方法之一。当然如果像那位同学一样有慧根,那真心不用听我废话了。
不需要线程的地方去启动线程,你知道意味着什么?
年轻人,基础书籍跟Java一点关系也没用好吧。
想当年我也是买了一大堆所谓热门被很多人推荐的JAVA书,现在那些书还在我书架上,
每本书我倒是都看了,但每本书我最多只看了其中的5%。
看完的只有一本讲java语法的小册子,不到100页。
基础是什么?是操作系统,是计算机组成原理,是数据结构,是算法导论,是数学。
跟java一毛钱关系都没有。
看所谓java教材纯属浪费时间,翻译错误百出不说,
而且一点点简单的事情能翻来覆去讲半天,把读者当小白教,
外国教材作者有这个倾向,所以动不动一本书600多页,里面大多是废话。
基础扎实的话,看Doc,看源码学得绝对比看书快,不明白的地方动动手,有个项目做的话最好。
Lang Spec和VM Spec是终极解释,特别是VM Spec看完后绝对醍醐灌顶。
基础不扎实的话,去上大学。
感谢老先生回复我的帖子。出于对您的尊重,我认真的回复您。 --------------------编程问答-------------------- 看来这里还是有高手的。。补充:Java , Java SE