Java的Thread的start(),run()和join()方法
来源:互联网 发布:苹果笔记本知乎 编辑:程序博客网 时间:2024/05/21 06:47
线程的创建:(来自于牛客网Java面试题)
1、继承Thread类
2、实现Runnable接口
3、应用程序可以使用Executor框架来创建线程池 高效, 容易实现
4、实现Callable接口
针对于Thread类的start(),run()和join()方法的说明:
1、start();线程不会立即启动。相当于是在就绪队列里面。
2、run()线程立即启动。
3、join()在一个线程中启动另一个线程。
----------------------------------------------------------------------------------------
下面我将给出一段代码:大家可以先猜猜大概的输出情况:
public class JoinTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
MyThread thread = new MyThread("test join");
MyThread thread1 = new MyThread("join1");
thread.start();//线程进入就绪队列
thread1.run();//线程立即执行
try {
thread.join();//在main的主线程中启动thread线程
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
for(int i = 0;i<=10;i++){
System.out.println("I am main thread");
}
}
}
class MyThread extends Thread{
MyThread(String s){
super(s);
}
public void run(){
for(int i = 0;i<=10;i++){
System.out.println("I am a "+getName());
try{
sleep(1000);
}catch(InterruptedException e){
return;
}
}
}
}
程序说明:在main函数里面创建了两个自定义的线程thread和thread1,其中thread调用start()方法,进入就绪队列,然后thread1调用run()方法。即thread1的状态是运行中即就是Runnable,现在现处于Runnable的线程有两个一个是thread1,另一个是main的主线程。然后main主线程顺序执行到try语句当中遇到thread.join()方法。根据join()方法,意思是在main主线程当中启动thread,而且thread是出于就绪队列,等待CPU的调度就可以执行,现在join()方法给了它CPU的调度。但是thread的线程和thread1的线程的执行顺序是随机的。main函数的执行,必须要等到thread执行完才可以执行。这个是根据join()方法决定的。
当然这只是我的见解,如果有什么问题,欢迎大家指正哦。
- Java的Thread的start(),run()和join()方法
- Thread.java start方法和run方法的区别
- java Thread中,run方法和start方法的区别
- Java中Thread类的start()方法和run()方法
- Thread的run方法和start方法
- Thread的run方法和start方法
- Thread的run方法和start方法
- Java Thread中start和run方法的区别?
- java Thread线程run()和start()方法的区别
- Java -- Thread中start和run方法的区别
- Java Thread中start和run方法的区别
- Thread类的start()和run()方法
- Thread的run和start方法区别
- Thread run()和start()方法的区别
- Thread的start()和join()方法
- java Thread的run()和start()
- Thread的start()和run()
- Thread的start和run
- ###Jsp+Servlet购物商城day03.1:商品添加到购物车。重点笔记
- 二叉排序树
- hpu1414: Kick Ass [字符串]
- hdu6205
- angular4 中使用table [rowspan]="num"
- Java的Thread的start(),run()和join()方法
- 关于SQL优化的相关问题
- requireJS
- 恶意代码分析实战 Lab 6-1 习题笔记
- 获取url中间地址
- 如何监听USB插拔
- 笨办法21函数的返回值
- 处女面(用友政务)
- 微信公众号开发(七)发送客服消息