第一种方法:Thread
-
自定义线程类继承Thread类
-
重写run()方法,编写线程执行体
-
创建线程对象,调用start()方法启动线程
-
注意:线程不一定立即执行,由CPU安排调度
继承Thread类创建多线程
package com.waves.dxcdemo;
import java.text.DateFormat;
import java.time.format.DateTimeFormatter;
import java.util.Date;
//创建多线程方式一:继承Thread类,重写run()方法,调用start开启线程
//总结 线程开启子线程不一定立即执行 ,由cpu调度执行
public class TestThread1 extends Thread{
继承Thread类使用多线程同步下载图片
package com.waves.dxcdemo;
import org.apache.commons.io.FileUtils;
import java.io.File;
import java.io.IOException;
import java.net.URL;
//练习Thread,实现多线程同步下载图片
public class TestThread2 extends Thread{
private String url; //下载图片的地址
private String name; //要下载(保存)的图片名字哦
public TestThread2(String url,String name){
this.url = url;
this.name =name;
}
第二种:实现Runable接口
-
定义实现MyRunnable类实现Runnable接口
-
实现Run()方法,编写线程执行体
-
创建线程对象,调用start()方法启动线程
-
注意:推荐使用Runnable对象,因为Java单继承的局限性
package com.waves.dxcdemo;
public class TestThread3 implements Runnable{
继承Thread类和实现Runnable接口-小结:
-
继承Thread类
-
子类继承Thread类具备多线程能力
-
启动线程:子类对象.start()
-
不建议使用:避免OOP单继承局限性
-
-
实现Runnable接口
-
实现接口Runnable具有多线程能力
-
启动线程:传入目标对象+Thread对象.start()
-
-