什么是多线程
多线程的本质是:合理的利用CPU的资源来实现线程的并行处理,来实现同一个进程内的多个任务的并行执行,同时基于线程本身的异步执行特征,提升任务处理效率。
如何在Java中创建线程
1、继承Thread类
public class ThreadDemo1 extends Thread {
@Override
public void run() {
System.out.println("当前线程"+Thread.currentThread().getName());
}
public static void main(String[] args) {
ThreadDemo1 threadDemo1 = new ThreadDemo1();
threadDemo1.start();
}
}
2、实现Runnable接口
/**
* @Author: wy
*/
public class RunnableDemo1 implements Runnable {
@Override
public void run() {
System.out.println("当前线程"+Thread.currentThread().getName());
}
public static void main(String[] args) {
RunnableDemo1 runnableDemo1 = new RunnableDemo1();
Thread thread = new Thread(runnableDemo1);
thread.start();
}
}
3、实现Callable接口
/**
* @Author: wy
*/
public class CallableDemo implements Callable<String> {
@Override
public String call() throws Exception {
System.out.println("当前线程"+Thread.currentThread().getName());
Thread.sleep(2000);
return "hello wy";
}
public static void main(String[] args) throws ExecutionException, InterruptedException {
//需要线程池来运行
ExecutorService executorService = Executors.newFixedThreadPool(1);
//返回结果
Future<String> future = executorService.submit(new CallableDemo());
//拿到返回值
//future.get() 是一个阻塞方法
System.out.println(future.get()+Thread.currentThread().getName());
}
}
线程的声明周期
-
new:初始状态,线程被构建,但是还没有调用start方法。
-
Runnabled:运行状态,就绪和运行统称运行状态
-
blocked:阻塞状态,线程因为某种原因放弃了cpu的使用权
-
wating:等待状态,
-
time_wating:超时等待状态
-
terminated:终止状态,表示当前线程执行完毕