新启动一个或多个线程去完成所要完成的工作,主线程继续执行,互不干扰。异步场景:
1、视频文件的格式转换(比较耗时);
2、一般都是耗时的步骤,使用一个新的线程去完成,主线程不受限制;
3、tomcat的异步servlet,让用户线程去处理耗时的操作,tomcat的工作线程继续工作不被阻塞;
4、ui程序中,启动线程进行其他操作,不阻碍ui线程。
实现方式一:使用Thread,直接匿名内部类实现。
public class Thread1 { public static void main(String[] args) throws InterruptedException { // 匿名内不类实现线程的创建 Thread t1 = new Thread("线程1") { @Override public void run() { System.out.println("匿名内不类实现第一种线程的创建"); } }; System.out.println("新创建的线程名:" + t1.getName()); // main线程休息1秒钟,t1在启动 Thread.sleep(1000); t1.start(); } }实现方式二:Runnable接口把线程和任务(要执行的代码)分开,其中Thread表示线程,Runnable表示可运行的任务(线程要执行的代码)。
public class Thread2 { public static void main(String[] args) throws InterruptedException { Runnable task = new Runnable() { @Override public void run() { System.out.println("匿名内不类实现第二种线程的创建"); } }; Thread t2 = new Thread(task); System.out.println("新创建的线程名:" + t2.getName()); // main线程休息1秒钟,t1在启动 Thread.sleep(1000); t2.start(); } }