关于多线程问题

lantuling 2011-11-03 06:13:54
今天刚讲了java多线程的课 有点东西不怎么理解 问老师吧 老师是澳大利亚人 你懂得 步入正题: 请看如下代码


public static void main(String[] args)
{
My_Runable r1=new My_Runable();//实现了 runnale方法
His_Runable r2=new His_Runable()//实现了 runnale方法
Thread t1=new Thread(r1);
Thread t2=new Thread(r2);
t1.start();
t2.start();
}
这样一来是 先执行哪个子线程呢 t1? t2? 还是随机。 比如 他们的run方法中有个打印函数,是先打印哪个呢?
为什么是随机的?还请懂的朋友详细 深刻的讲讲
...全文
64 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
lantuling 2011-11-04
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 wby13579 的回复:]

谁快执行谁。
[/Quote]

不是按着顺序么?
主线程先开始,然后走到t1的start函数 去执行他的run函数。。。。 是不是执行到run函数的一开头 就出现了
两个线程,然后这主线程和主线程先开始t1轮流执行(这个时候t2run函数还没有继续往下执行),走着走着碰到了t2重复以上的步骤,我猜想run()函数是不是一个标记,假如一个类中有run()函数,那么JVM就是为他为子线程,则这个函数,可以不执行,(比如用个continue语句),而是继续往下走主线程。只不过是把这个子线程放到一个消息队列中 等待JVM分配CPU???
lantuling 2011-11-04
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 maydie1989 的回复:]

t1先start()啊
但是打印的规律的话就无法确定了
看谁获得cpu了吧
[/Quote]

不是按着顺序么?
主线程先开始,然后走到t1的start函数 去执行他的run函数。。。。 是不是执行到run函数的一开头 就出现了
两个线程,然后这主线程和主线程先开始t1轮流执行(这个时候t2run函数还没有继续往下执行),走着走着碰到了t2重复以上的步骤,我猜想run()函数是不是一个标记,假如一个类中有run()函数,那么JVM就是为他为子线程,则这个函数,可以不执行,(比如用个continue语句),而是继续往下走主线程。只不过是把这个子线程放到一个消息队列中 等待JVM分配CPU???
lantuling 2011-11-04
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 jinyongqing 的回复:]

t1先启动,然后main()线程和t1()并发执行,main()中接着就启动t2().
至于先打印谁,就是看哪个线程快,先执行到打印的语句
[/Quote]

不是按着顺序么?
主线程先开始,然后走到t1的start函数 去执行他的run函数。。。。 是不是执行到run函数的一开头 就出现了
两个线程,然后这主线程和主线程先开始t1轮流执行(这个时候t2run函数还没有继续往下执行),走着走着碰到了t2重复以上的步骤,我猜想run()函数是不是一个标记,假如一个类中有run()函数,那么JVM就是为他为子线程,则这个函数,可以不执行,(比如用个continue语句),而是继续往下走主线程。只不过是把这个子线程放到一个消息队列中 等待JVM分配CPU???
卡比兽的球 2011-11-03
  • 打赏
  • 举报
回复
t1先start()啊
但是打印的规律的话就无法确定了
看谁获得cpu了吧
望舒 2011-11-03
  • 打赏
  • 举报
回复
  • 打赏
  • 举报
回复
t1先启动,然后main()线程和t1()并发执行,main()中接着就启动t2().
至于先打印谁,就是看哪个线程快,先执行到打印的语句
wby13579 2011-11-03
  • 打赏
  • 举报
回复
看楼下怎么说
wby13579 2011-11-03
  • 打赏
  • 举报
回复
谁快执行谁。

51,409

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧