前言
一、什么是多线程?
二、多线程的快速入门
三、多线程的三种创建方式
1.继承Tread类
2.实现Runnable接口
3.实现Callable接口
四、多线程的常用方法
前言
本文讲解了多线程的基础知识,针对java入门级别的读者,帮助其快速掌握并运用多线程。基础介绍帮助你快速了解多线程,快速入门帮你快速运用,处理较基础的问题,后面的篇章帮助你解决一些各种业务场景的需求,之后多线程的基础讲解系列二涉及了安全,同步,通信,线程池等知识。
一、多线程是什么?
在这里,文件的上传和下载是同时进行的,不同的文件下载是同时进行的,这就是多线程。
每个任务(无论相同还是不同)同时由一个进程进行处理就是多线程。
二、多线程的快速入门
1.代码示例
代码如下(示例):
public class Test { public static void main(String[] args) { MyTread myTread = new MyTread();//创建MyTread的对象 myTread.start();//调用start的方法 } } class MyTread extends Thread{ //重写run方法 @Override public void run() { //线程的功能代码 System.out.println("hello"); } }
2.步骤讲解
- 首先新建一个类,并继承Thread
- 重写run方法,在run方法里写线程的功能代码
- 在主类中创建对象
- 调用start方法
- 新建的线程必须在mian方法的相应代码前。否则主线程代码跑完在跑新线程,无意义,等于一个线程跑。
- 主方法中必须调用start方法而不是run,调用run方法会跑实例方法,而不是开启一共线程跑run方法。
public class Test { public static void main(String[] args) { MyTread myTread = new MyTread();//创建MyTread的对象 myTread.start();//调用start的方法 } } class MyTread extends Thread{ //重写run方法 @Override public void run() { //线程的功能代码 System.out.println("hello"); } }2.实现Runnable接口
1.第一种直接新建类实现Runnable的接口
public class Test { public static void main(String[] args) { Runnable runnable = new MyTread();//创建Runnacle的实例对象 new Thread(runnable).start();//把任务对象传给Thread,调用start的方法 //主线程功能代码 System.out.println("main"); } } //新建类实现Runnable接口 class MyTread implements Runnable{ //重写run方法 @Override public void run() { //线程的功能代码 System.out.println("hello"); } }
2.第二种使用匿名内部类方法(强烈推荐)
public class Test { public static void main(String[] args) { new Thread(new Runnable() { @Override public void run() { //这里写子线程的功能代码 System.out.println("我是子线程"); } }).start();//调用start的方法 //主线程功能代码 System.out.println("main"); } }
3.匿名内部类可以简化
public class Test { public static void main(String[] args) { new Thread(()-> //这里写子线程的功能代码 System.out.println("我是子线程") ).start();//调用start的方法 //主线程功能代码 System.out.println("main"); } }3.实现Callable接口
public class Test { public static void main(String[] args) throws Exception { FutureTask futureTask = new FutureTask(new MyTread());//创建一个Callable的实现类对象,通过FutureTask将该类封装成任务对象(实现Runnable) new Thread(futureTask).start();//将任务对象交给线程对象,调用start的方法 //主线程功能代码 System.out.println("main"); //调用子线程返回值 System.out.println(futureTask.get());//返回值使用FutureTask的get方法得到 } } //新建类实现Callable接口 ,定义泛型,这里定义的是String class MyTread implements Callable四、多线程的常用方法 (基础){ @Override public String call() throws Exception { //功能代码 return "我是子线程";//返回相应类型值 } }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)