1、创建执行线程有两种方法
- 扩展Thread类(重新run方法)
@Override
public void run() {}
new MyThread().start();//启动线程
- 实现Runnable接口
public class MyThread extends Thread{
@Override
public void run() {
System.out.println(getName() + "线程运行起来了");
}
}
new Thread(new MyRunnale()).start();//启动线程
2、join
主线程生成并启动了子线程,而子线程里要进行大量的耗时的运算(这里可以借鉴下线程的作用),当主线程处理完其他的事务后,需要用到子线程的处理结果,这个时候就要用到join();方法了。
解释一下,是主线程等待子线程的终止。也就是说主线程的代码块中,如果碰到了t.join()方法,此时主线程需要等待(阻塞),等待子线程结束了(Waits for this thread to die.),才能继续执行t.join()之后的代码块。
3、callable
callable和Runnable的区别是callable可以有返回值,也可以抛出异常的特性,而Runnable没有
@Override标签:join,Thread,主线,线程,new,public From: https://www.cnblogs.com/jiningning/p/17240573.html
public String call() throws Exception {
Thread.sleep(5000);
return "call方法的返回值";
}