线程创建的方式是什么
发表于:2025-11-13 作者:千家信息网编辑
千家信息网最后更新 2025年11月13日,本篇内容介绍了"线程创建的方式是什么"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Thread 、R
千家信息网最后更新 2025年11月13日线程创建的方式是什么
本篇内容介绍了"线程创建的方式是什么"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
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("结婚前布置现场..."); }}"线程创建的方式是什么"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!
线程
对象
方法
图片
代理
结婚
角色
方式
子类
接口
事情
内容
地址
实例
文件
文件名
更多
模式
知识
网络
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
数据库的主要功能
辽宁智慧养老软件开发公司
用什么app做软件开发
计算机网络技术基础pdf
网络安全的正能量句子
jdbc连接oracle数据库
关于网络安全知识竞赛的网站
查数据库备份地址
日语作文我的工作软件开发
计算机网络技术专升本合肥
江阴创新软件开发职能
碧蓝航线的服务器分渠道服和什么
首选dns服务器保存不了
网络技术如何发展
怀化市民网络安全
南山专业的服务器运维服务
惠普服务器 h3c
服务器支付宝连续包月
网络安全无小事系列全集
网络技术大学世界排名
手机版服务器指令推荐
access数据库 接口
网络安全的正能量句子
网络服务器中双网卡配置怎么弄
数据库审计如何工作
跨境亚马逊源码软件开发
赌博软件开发讨论
iis邮件服务器
实时数据库 内存数据库
饭客网络安全ppt