java-多线程(按照狂神说视频编写)

多任务

例如生活中的例子:

①边吃饭边玩手机

②疯狂司机,边开车+打电话+打点滴


现实中太多这样同时做多件事情的例子了,看起来是多个任务都在做,其实本质上我们的大脑在同一时间依旧只做了一件事情。
多任务处理是指用户可以在同一时间内运行多个应用程序,每个应用程序被称作一个任务.Linux、windows就是支持多任务的操作系统,比起单任务系统它的功能增强了许多。

线程

概念:线程(英语:thread)是操作系统能够进行运算调度的最小单位。大部分情况下,它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。

多线程Thread


原来是一条路,慢慢因为车太多了,道路堵塞,效率极低。为了提高使用的效率,能够充分利用道路,于是加了多个车道。从此,妈妈再也不用担心道路堵塞了。

普通方法调用

多线程调用

程序

程序是指令和数据的有序集合,其本身没有任何运行的含义,是一个静态的概念。

进程Process

概念:而进程则是执行程序的一次执行过程,它是一个动态的概念。是系统资源分配的单位
通常在一个进程中可以包含若干个线程,当然一个进程中至少有一个线程,不然没有存在的意义。线程是CPU调度和执行的的单位。

本章核心

线程的创建

有三种方式,具体看图

一.继承Threa类

继承Thread类,重新run方法,调用start方法
注意:线程不一定立即执行,由CPU调度执行

    @Override
    public void run() {
//        run方法线程体
        for (int i = 0; i < 200; i++) {
            System.out.println("我是run方法"+i);
        }
    }
    public static void main(String[] args) {
        //main线程,主线程
        //创建一个线程对象并调用
        TestThread1 testThread1=new TestThread1();
        testThread1.start();
        for (int i = 0; i < 1000; i++) {
            System.out.println("我是主线程"+i);
        }
    }
} 

图片下载小案例

注意:要先导入一个jar包(commons-io-2.6.jar)

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 t1=new TestThread2("https://n.sinaimg.cn/news/transform/w150h150/20180223/xbJU-fyrswmv2029131.jpg","1.jpg");
        t1.start();//上述url地址是图片地址
    }
}

//下载器
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方法出现问题");
        }
    }
}
posted @   程序员cheer  阅读(70)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示