多线程:线程、进程、多线程

文章讨论了大脑的单线程特性,指出虽然表面看似同时处理多个任务,但实际上一次只能执行一个。介绍了Java中创建线程的三种方式,特别是推荐使用Runnable接口以解决单继承限制。通过实例演示如何使用Runnable接口实现并发下载功能,强调其在多线程编程中的灵活性和优势。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

大脑看起来是很多个任务都在做,但是本质上就是我们的大脑在同一时间依旧只做了一件事情

很有趣的就是高中时期我一直在听课做作业,因为人脑是单线程的,所以可能在这一瞬你是在学习写作业,但是下一个瞬间你就是在听歌,两者这么循环切换。之所以觉得有趣是我在高中时期就想过,边听音乐边写作业会不会有影响,根据我的成绩来看,应该确实是有一定的影响的,但还是因人而异。

线程创建的三种方式:

1.继承Thread类

2.实现runnanble接口(重要)

3.实现Callable接口

public class TestThread01 extends Thread {
    @Override
    public void run() {
        //run()方法线程体
        for(int i = 0;i<20;i++){
            System.out.println("我在看代码——————"+i);
        }
    }

    public static void main(String[] args) {
        //main()方法主线程

        //创建一个线程对象
        TestThread01 testThread01 = new TestThread01();

        //调用start()方法开启线程
        testThread01.start();

        for (int i = 0;i<2000;i++){
            System.out.println("我在学习多线程+++"+i);
    }
    }
}

总结:线程开启不一定立即执行,由CPU调度执行

---------------------------------------------------------------------

使用runnable接口来实现多线程,由于java单继承,建议使用

//创建线程方式2:实现runnable接口,重写run方法,执行线程需要丢入runnable接口实现类,调用start方法
public class TestThread02 implements Runnable{
    String url;
    String name;
    public TestThread02(String url,String name){
        this.url = url;
        this.name = name;
    }
    @Override
    public void run() {
        WebDownLoad webDownLoad = new WebDownLoad();
        webDownLoad.download(url,name);
    }

    public static void main(String[] args) {
        TestThread02 testThread021 = new TestThread02("","");
        TestThread02 testThread022 = new TestThread02("","");
        TestThread02 testThread023 = new TestThread02("","");
        new Thread(testThread021).start();
        new Thread(testThread022).start();
        new Thread(testThread023).start();
    }
}
class WebDownLoad{
    public void download(String url, String name){
        try {
            FileUtils.copyURLToFile(new URL(url),new File(name));
        } catch (IOException e) {
            e.printStackTrace();
            System.out.println("下载出现问题!");
        }
    }
}

避免单继承局限性,灵活方便,方便一个对象被多个线程使用,一份资源多个代理

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值