关于JAVA线程的问题
java吧
全部回复
仅看楼主
level 4
lhy3910139 楼主
看JAVA视频学到了线程这一章。测试程序中调用了Thread的start方法。代码如下
public class testThread{
public static void main(String args[]){
runner1 r = new runner1();
Thread t = new Thread(r);
t.start();
for (int i=0;i<100;i++){
System.out.println("main thread:--------" + i);
}
}
}
class runner1 implements Runnable{
public void run(){
for (int i = 0;i<100;i++){
System.out.println("runner1 :"+i);
}
}
}
2015年03月31日 07点03分 1
level 4
lhy3910139 楼主
视频中输出结果如下
2015年03月31日 07点03分 2
level 4
lhy3910139 楼主
但在我电脑中运行效果有一点点变化
开始是很规律的交替运行,可是到后面不规则了
2015年03月31日 07点03分 3
level 13
[黑线]然后你还发现每次运行结果不一样?
2015年03月31日 07点03分 4
确实是不一样,就是好奇这是由CPU多核导致的么?
2015年03月31日 07点03分
level 4
lhy3910139 楼主
那么问题来了,这视频是马士兵老师零几年的视频,那时候他的电脑很可能是CPU单核,那在4核八线程的CPU中,thread的start方法是如何实现的呢?为何会出现前半段输出有规律,后半段就乱了的情况呢?
2015年03月31日 07点03分 5
level 4
lhy3910139 楼主
另外···脑海里灵光一闪···这个时间片的分配不均匀是不是跟中断有关系?
2015年03月31日 07点03分 6
时间片轮转[滑稽]
2015年03月31日 07点03分
level 12
劝退[阴险]
2015年03月31日 07点03分 7
[滑稽]早想退了
2015年03月31日 07点03分
level 7
cpu呗
2015年03月31日 07点03分 8
level 4
多线程由CPU调度,执行先后是不可控的,除非thread.join()线程间等待
2015年03月31日 07点03分 9
那所谓的多核不就相当于是多个CPU同时跑么?那有没有可能将两个进程分给两个核跑?
2015年03月31日 07点03分
@lhy3910139 多线程并行或并发处理应该是系统级或语言级的支持能力,代码只是遵循一些规范编写而已,要想指定内核来运行应该很困难吧
2015年04月14日 07点04分
level 11
这都不懂,劝退。
——只要看到你和别人很亲密的样子,我就再也不想和你说话了。
               
2015年03月31日 08点03分 10
退退退,搬砖都比干JAVA有前途
2015年03月31日 08点03分
level 11
哈哈
2015年03月31日 08点03分 11
level 11
满大街都是java程序员
2015年03月31日 08点03分 12
可还是缺好的程序猿,所以要精益求精咯·······
2015年03月31日 10点03分
level 11
我也是醉了,
2015年03月31日 10点03分 13
level 11
这也要问,
2015年03月31日 10点03分 14
level 11
你再写个还能让第一个走一会不走完就不走了呢
2015年03月31日 10点03分 15
1