线程创建的方式是什么

本篇内容介绍了“线程创建的方式是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

公司主营业务:成都网站设计、成都网站建设、移动网站开发等业务。帮助企业客户真正实现互联网宣传,提高企业的竞争能力。成都创新互联公司是一支青春激扬、勤奋敬业、活力青春激扬、勤奋敬业、活力澎湃、和谐高效的团队。公司秉承以“开放、自由、严谨、自律”为核心的企业文化,感谢他们对我们的高要求,感谢他们从不同领域给我们带来的挑战,让我们激情的团队有机会用头脑与智慧不断的给客户带来惊喜。成都创新互联公司推出顺城免费做网站回馈大家。

Thread 、Runnable、Callable三种方式

线程创建的方式是什么

创建一个新的执行线程有两种方法。 一个是将一个类声明为Thread的子类。 这个子类应该重写run类的方法Thread 。 然后可以分配并启动子类的实例。 例如,计算大于规定值的素数的线程可以写成如下:

线程创建的方式是什么

package com.example.thread.class1;// 实现多线程的第一种方法,继承 Thread 类,重写 run ,调用 start 方法开启线程public class TestThread1 extends Thread{@Override    public void run() {// 线程方法体        for (int i = 0; i < 2000; i++) {
            System.out.println("我在看代码****"+i);        }
    }public static void main(String[] args) {//创建一个线程对象        TestThread1 thread1 = new TestThread1();        thread1.start();        // 主线程        for (int i = 0; i < 2000; i++) {
            System.out.println("我在学习多线程****"+i);        }
    }
}

线程创建的方式是什么

线程开启不一定立即执行,由cpu调度

实现多线程下载图片

package com.example.thread.class1;import org.apache.commons.io.FileUtils;import java.io.File;import java.io.IOException;import java.net.MalformedURLException;import java.net.URL;// 实现多线程同步下载图片 2public class TestThread2 extends Thread {

    String url; // 网络图片地址    String name; // 保存文件名     public TestThread2(String url,String name){this.url =url;        this.name =name;     }@Override    public void run() {
        downLoader loader = new downLoader();        try {
            loader.downLoad(url,name);            System.out.println("下载的图片"+name);        } catch (MalformedURLException e) {
            e.printStackTrace();        }
    }public static void main(String[] args) {
        TestThread2 thread1 = new TestThread2("https://img-pre.ivsky.com/img/tupian/pre/202103/04/sunyunzhu_heise_lianyiqun-006.jpg","1");        TestThread2 thread2 = new TestThread2("https://img-pre.ivsky.com/img/tupian/pre/202103/04/sunyunzhu_heise_lianyiqun-006.jpg","2");        TestThread2 thread3 = new TestThread2("https://img-pre.ivsky.com/img/tupian/pre/202103/04/sunyunzhu_heise_lianyiqun-006.jpg","3");        thread1.start();        thread2.start();        thread3.start();    }
}// 下载器 WebdownLoaderclass downLoader{public  void downLoad(String url,String name) throws MalformedURLException {try {
            FileUtils.copyURLToFile(new URL(url),new File(name));        } catch (IOException e) {
            e.printStackTrace();            System.out.println("IO异常,downloader 方法出现问题");        }
    }
}

另一种方法来创建一个线程是声明实现类Runnable接口。 那个类然后实现了run方法。 然后可以分配类的实例,在创建Thread时作为参数传递,并启动。 这种其他风格的同一个例子如下所示:

线程创建的方式是什么

package com.example.thread.class1;import org.apache.commons.io.FileUtils;import java.io.File;import java.io.IOException;import java.net.MalformedURLException;import java.net.URL;// 实现多线程同步下载图片 2public class TestThread2 implements Runnable {

    String url; // 网络图片地址    String name; // 保存文件名     public TestThread2(String url,String name){this.url =url;        this.name =name;     }@Override    public void run() {
        downLoader loader = new downLoader();        try {
            loader.downLoad(url,name);            System.out.println("下载的图片"+name);        } catch (MalformedURLException e) {
            e.printStackTrace();        }
    }public static void main(String[] args) {
        TestThread2 thread1 = new TestThread2("https://img-pre.ivsky.com/img/tupian/pre/202103/04/sunyunzhu_heise_lianyiqun-006.jpg","1");        TestThread2 thread2 = new TestThread2("https://img-pre.ivsky.com/img/tupian/pre/202103/04/sunyunzhu_heise_lianyiqun-006.jpg","2");        TestThread2 thread3 = new TestThread2("https://img-pre.ivsky.com/img/tupian/pre/202103/04/sunyunzhu_heise_lianyiqun-006.jpg","3");        new Thread(thread1).start();        new Thread(thread2).start();        new Thread(thread3).start();    }
}// 下载器 WebdownLoaderclass downLoader{public  void downLoad(String url,String name) throws MalformedURLException {try {
            FileUtils.copyURLToFile(new URL(url),new File(name));        } catch (IOException e) {
            e.printStackTrace();            System.out.println("IO异常,downloader 方法出现问题");        }
    }
}

线程创建的方式是什么

多线程中的静态代理模式

1.真实角色(委托对象)

2.代理角色

3.共同实现的接口

package com.example.demo.class1;import java.lang.reflect.WildcardType;/** * 静态代理模式: * 真实对象和代理对象都要同时实现同一个接口 * * 好处: * 代理对象可以做很多真实对象做不了的事情 * 真实对象就专注自己的事情 */public class StacticProxy {    public static void main(String[] args) {//        new Thread( ()->System.out.println("我爱你")).start();        new WeddingCompany(new You()).HappyMarry();        /*WeddingCompany weddingCompany = new WeddingCompany(new You());        weddingCompany.HappyMarry();*/    }}interface Marry{    void HappyMarry();}// 真实角色,你去结婚class You implements Marry{    @Override    public void HappyMarry() {        System.out.println("陈老师要结婚了.....");    }}// 代理角色,帮助你结婚class WeddingCompany implements  Marry{    private  Marry target; // 需要代理的对象,真实的对象    public WeddingCompany(Marry target) {        this.target = target;    }    @Override    public void HappyMarry() {        before();        this.target.HappyMarry(); // 这就是真实对象的结婚        after();    }    private void after() {        System.out.println("结婚后收钱...");    }    private void before() {        System.out.println("结婚前布置现场...");    }}

“线程创建的方式是什么”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注创新互联网站,小编将为大家输出更多高质量的实用文章!


本文标题:线程创建的方式是什么
路径分享:http://bzwzjz.com/article/gjejcp.html

其他资讯

Copyright © 2007-2020 广东宝晨空调科技有限公司 All Rights Reserved 粤ICP备2022107769号
友情链接: 成都网站制作 网站建设开发 成都网站建设 自适应网站设计 成都网站设计 品牌网站建设 成都商城网站制作 成都h5网站建设 成都网站建设 定制网站设计 成都品牌网站建设 定制级高端网站建设 响应式网站设计 专业网站建设 重庆企业网站建设 四川成都网站建设 成都网站设计 成都网站建设 网站建设方案 LED网站设计方案 网站建设公司 成都网站制作