多线程是指在一个程序中同时存在多个执行路径的情况。这些路径可以并发地执行,从而提高程序的执行效率和响应速度。
多线程的实方式
一.继承Thread类
1.自定义一个类MyThread类,用来继承Thread类
2.重写run方法
public class MyThread extends Thread{ @Override public void run(){ for (int i = 0; i < 100; i++) { System.out.println(getName()+"hello"); } } } 3.创建对象开启线程
public class ThreadDemo { public static void main(String[] args) { MyThread t1 = new MyThread(); MyThread t2 = new MyThread(); t1.setName("线程1"); t2.setName("线程2"); t1.start(); t2.start(); } }
二.实现Runnable接口
1.自己定义一个类实现Runnable接口 2.重写run方法
public class MyRun implements Runnable{ @Override public void run() { for (int i = 0; i < 100; i++) { // 获取当前线程的对象 Thread thread = Thread.currentThread(); System.out.println(thread.getName()+"hello"); } } }
3.创建自己的类对象 4.创建一个Thread类的对象,并开启线程
public class ThreadDemo { public static void main(String[] args) { MyRun myRun = new MyRun(); // 创建线程对象 Thread t1 = new Thread(myRun); Thread t2 = new Thread(myRun); t1.setName("线程1"); t2.setName("线程2"); //开启线程 t1.start(); t2.start(); } }
三.实现Callable接口
特点:可用获取到多线程运行的结果 1.创建一个类MyCallable实现Callable接口 2.重写call(是有返回值的,表示多线程运行的结果)
public class MyCallable implements Callable<Integer> { @Override public Integer call() throws Exception { // 求1——100之间的和 int sum=0; for (int i = 0; i < 100; i++) { sum=sum+i; } return sum; } }
3.创建MyCallable的对象(表示多线程要执行的任务) 4.创建一个Future对象(作用管理多线程的结果) 5.创建Thread类的对象,并启动(表示线程)
public class ThreadDemo { public static void main(String[] args) throws ExecutionException, InterruptedException { // 创建MyCallable的对象(表示多线程要执行的任务) MyCallable myCallable = new MyCallable(); // 创建FuTuerTask的对象(作用管理多线程运行的结果) FutureTask<Integer> futureTask=new FutureTask<>(myCallable); // 创建线程对象 Thread thread = new Thread(futureTask); // 启动线程 thread.start(); // 获取线程运行的结果 Integer result = futureTask.get(); System.out.println(result);