当前位置:首页 » 操作系统 » javathread源码

javathread源码

发布时间: 2025-02-12 12:12:37

① 详解java Thread中的join方法

在Java编程中,Thread类的join()方法发挥着关键作用。当需要控制线程执行顺序时,它能让调用线程暂停,直至被调用的线程完成。在主线程(如main())中,join()尤其有用,它会阻止主线程直到目标线程结束,例如:

当调用t1.join()时,main()线程会被暂停,直到t1线程完全执行完毕,然后main()线程才会继续执行。

join()方法的工作原理主要依赖于Java内存模型中的同步机制。通过查看Thread类的源码,我们发现join()实际上调用了wait()方法,使调用线程进入等待状态,直到目标线程结束。由于wait()方法前有synchronized修饰,这意味着主线程(t1线程的持有者)会在一个锁定的上下文中等待,如下所示:

代码等效于:synchronized(this) { wait(); },使得主线程进入等待队列,直到t1线程结束。

然而,wait()方法本身并不会唤醒主线程,唤醒过程隐藏在Java虚拟机(JVM)的底层。当t1线程执行完毕,JVM会自动调用lock.notify_all()方法,将主线程从等待队列中唤醒。

总结起来,join()方法的使用需要注意以下两点:
1. 它让调用线程暂停,直到目标线程结束。
2. 唤醒机制由JVM内部的notify_all()方法控制,确保线程按照预期顺序执行。

理解这些原理,能帮助你更有效地管理和控制Java线程。

② java编写一个用于继承Thread并创建两个线程,每个线程输出从1到5的数

--------------------------napolun180410-----------------------------

public class MyThread extends Thread{
public void run(){
try{
for(int i=1;i<6;i++){
System.out.println(i);
sleep(2000);
}
}
catch(InterruptedException e){}
}
public static void main(String args[]){
System.out.println("当前的线程数:"+Thread.activeCount());
MyThread thread1=new MyThread();
thread1.start();
System.out.println("当前的线程数:"+Thread.activeCount());
MyThread thread2=new MyThread();
thread2.start();
System.out.println("当前的线程数:"+Thread.activeCount());
}
}

文件名 MyThread.java (注意大小写,别改文件名)

--------------------------有问题发消息我----------------------------

热点内容
python用什么开发工具 发布:2025-05-06 20:33:06 浏览:86
宽带上传提速 发布:2025-05-06 20:24:58 浏览:25
win搭建域名服务器配置 发布:2025-05-06 20:16:49 浏览:783
怎么恢复最常访问 发布:2025-05-06 20:07:33 浏览:511
手机不能缓存音乐 发布:2025-05-06 20:06:17 浏览:528
淘宝直播上传 发布:2025-05-06 19:51:09 浏览:920
路由器中的存储器有哪几种类型 发布:2025-05-06 19:49:43 浏览:114
如何让服务器流畅 发布:2025-05-06 19:42:42 浏览:602
怎么样在腾讯上传视频 发布:2025-05-06 19:42:42 浏览:318
cf存储卡外形尺寸 发布:2025-05-06 19:42:27 浏览:844