Thread类及使用

    科技2022-07-13  117

    Thread类

    自定义线程类继承Thread类重写run()方法,编写线程执行体创建线程对象,调用start()方法启动线程

    参考代码

    //创建线程方式一:继承Thread类,重写run()方法,调用start开启线程 //总结:注意,线程开启不一定立即执行,由CPU调度执行 public class ArrayDemo10 extends Thread{ @Override public void run() { //run方法线程体 for (int i = 0; i < 200; i++) { System.out.println("run方法" + i); } } public static void main(String[] args) { //main线程,主线程 //创建一个线程对象 ArrayDemo10 ad = new ArrayDemo10(); //调用start()方法开启线程 ad.start(); for (int i = 0; i < 1000; i++){ System.out.println("main方法" + i); } } }

    实例:网图下载

    import org.apache.commons.io.FileUtils; import java.io.File; import java.io.IOException; import java.net.URL; //需要架包:commons-io.jar //练习Thread,实现多线程同步下载图片 public class Demo02 extends Thread { //继承Thread类 private String url; //网络图片地址 private String name; //保存的文件名 //构造器 public Demo02(String url, String name) { this.url = url; this.name = name; } //重写run方法 @Override public void run() { WebDownloader webDownloader = new WebDownloader(); webDownloader.downloader(url, name); System.out.println("下载了文件名为:" + name); } public static void main(String[] args) { Demo02 d1 = new Demo02("https://img-home.csdnimg.cn/images/20201001020546.jpg", "1.jpg"); Demo02 d2 = new Demo02("https://img-home.csdnimg.cn/images/20201001020546.jpg", "2.jpg"); Demo02 d3 = new Demo02("https://img-home.csdnimg.cn/images/20201001020546.jpg", "3.jpg"); d1.start(); d2.start(); d3.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方法出现问题"); } } }
    Processed: 0.009, SQL: 8