线程的基本概念及创建方式
线程的基本概念
进程与线程的区别
进程
解释:硬盘上有一个程序,这个程序叫做360.exe,这是一个程序,这个程序是一个静态的概念,它被存储在硬盘上,但我们单击它的时候,exe文件就会启动,这个时间叫做启动了一个进程。
线程
解释:作为一个进程里面最小的执行单元叫做一个线程,用简单的话讲一个程序里不同的执行路径就叫做一个线程
创建线程的几种方式
1. 通过自己的类继承Thread类,然后通过new创建一个线程,并start启动
public class MainTest {
public static void main(String[] args) {
new MyThread().start();
System.out.println(Thread.currentThread().getName());
}
}
class MyThread extends Thread{
@Override
public void run() {
System.out.println(Thread.currentThread().getName());
}
}
2. 通过实现Runnable接口,然后创建Thread,将实现了Runable的类新建后,作为构造方法
public class MainTest {
public static void main(String[] args) {
new Thread(new MyRunnable()).start();
System.out.println(Thread.currentThread().getName());
}
}
class MyRunnable implements Runnable{
@Override
public void run() {
System.out.println(Thread.currentThread().getName());
}
}
3. 带返回的Callable
public class MainTest {
public static void main(String[] args) {
FutureTask<String> futureTask = new FutureTask(new MyCallable());
try {
//自动阻塞,当futuretask线程运行完返回结果后,自动唤醒
futureTask.get();
} catch (InterruptedException e) {
e.printStackTrace();
} catch (ExecutionException e) {
e.printStackTrace();
}
}
}
class MyCallable implements Callable<String>{
@Override
public String call() throws Exception {
System.out.println("return string result after run finish");
return "I am result";
}
}`
常见面试题
- 启动线程的三种方式
- new MyThread()
- new Thread(MyRunnable)
- Executors.newCachedThreadPool或者 FutureTask+Callable