Thread
-
自定义线程类继承Thread类
-
重写run()方法,编写线程执行体
-
创建线程对象,调用start()方法启动线程
public class TestThread1 extends Thread{ //线程入口点 @Override public void run() { //线程体 for (int i = 0; i < 20; i++) { System.out.println("我在听课==="+i); } } public static void main(String[] args) { //线程创建对象 TestThread1 t1 = new TestThread1(); for (int i = 0; i < 20; i++) { System.out.println("我在写代码==="+i); } t1.start(); } }
普通方法调用和多线程
网图下载
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; } //下载图片线程的执行体 @Override public void run() { WebDownloader webDownloader = new WebDownloader(); webDownloader.downloader(url,name); System.out.println("下载了文件名:"+name); } public static void main(String[] args) { TestThread2 testThread1 = new TestThread2("https://img2.woyaogexing.com/2020/11/03/1266b2dbc89046bb9ed50eca13a8f6cb!400x400.jpeg","1.jpg"); TestThread2 testThread2 = new TestThread2("https://img02.sogoucdn.com/app/a/100520093/fb41c7c77a2454f7-01eba5833e7e38bc-f23635998ba2ba38fef4a7d7c4da1ff6.jpg","2.jpg"); TestThread2 testThread3 = new TestThread2("http://www.520touxiang.com/uploads/allimg/2018040709/mgiqnjn4apb.jpg","3.jpg"); testThread1.start(); testThread2.start(); testThread3.start(); } } //下载器 class WebDownloader{ //下载方法 public void downloader(String url,String name){ try { FileUtils.copyURLToFile(new URL(url),new File(name)); } catch (IOException e) { e.printStackTrace(); System.out.println("IO异常,downloader方法出现问题"); } } }