多线程基础

什么是多线程

生活中一边吃饭一边看电视……
计算机可以一边听歌一边打游戏……但实际上不是同时进行的,而可能是这一毫秒做这件事,下一毫秒做另一件事,宏观上看起来好像是同时在做几件事,但微观上看,在某一时刻是做的一件事。

创建多线程的方法一:继承Thread类,重写run方法,调用start方法开启线程

//创建一个线程,方法一: 继承Thread类,重写run方法,调用start方法开启线程
public class HelloThread extends Thread{
    @Override
    public void run() {
        for (int i = 0; i < 200; i++) {
            System.out.println("###############线程"+i);
            
        }
    }

    public static void main(String[] args) {
        HelloThread helloThread = new HelloThread();

        //run方法 主线程和其他线程顺序执行
        //helloThread.run();

        //start方法  主线程和其他线程交替执行
        helloThread.start();

        for (int i = 0; i < 200; i++) {
            System.out.println("主线程"+i);
        }
    }
}

方法二

//方法二 创建线程
//实现Runnable接口,重写run方法,执行线程需要放入runnable接口的实现类,调用start方法
public class TestRunnable implements Runnable{

    @Override
    public void run() {
        for (int i = 0; i < 200; i++) {
            System.out.println("******************线程"+i);
        }
    }

    public static void main(String[] args) {

        TestRunnable testRunnable = new TestRunnable();

        //Thread thread = new Thread(testRunnable);
        //thread.start();

        //简写为
        new Thread(testRunnable).start();

        for (int i = 0; i < 200; i++) {
            System.out.println("主线程"+i);
        }
    }
}

测试多线程——网图下载

需要导入jar包commons-io-2.10.0.jar,可以通过百度下载
创建lib,jar包粘贴到lib下,as library

public class TestThreadDown extends Thread {
    private String url;
    private String name;

    public TestThreadDown(String url, String name) {
        this.url = url;
        this.name = name;
    }

    @Override
    public void run() {
        super.run();
        WebDownLoader webDownLoader = new WebDownLoader();
        webDownLoader.down(url,name);
        System.out.println("下载了"+name);
    }

    public static void main(String[] args) {
        TestThreadDown testThreadDown0 = new TestThreadDown("https://img2.baidu.com/it/u=859882613,1564073189&fm=26&fmt=auto", "1.jpg");
        TestThreadDown testThreadDown1 = new TestThreadDown("https://img0.baidu.com/it/u=1305456094,3865830840&fm=26&fmt=auto", "2.jpg");
        TestThreadDown testThreadDown2 = new TestThreadDown("https://img2.baidu.com/it/u=199470515,2647632077&fm=26&fmt=auto", "3.jpg");

        testThreadDown0.start();
        testThreadDown1.start();
        testThreadDown2.start();
    }
}

class WebDownLoader{
    public void down(String url,String fileName){
        try {
            FileUtils.copyURLToFile(new URL(url),new File(fileName));
        } catch (IOException e) {
            e.printStackTrace();
            System.out.println("下载异常,down方法出现问题");
        }
    }
}

从结果可以看出,三个图片不是按1、2、3的顺序下载。

posted @   ︶ㄣ演戲ㄣ  阅读(4)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示