线程创建的方式是什么
发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,本篇内容介绍了"线程创建的方式是什么"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Thread 、R
千家信息网最后更新 2026年11月03日线程创建的方式是什么
本篇内容介绍了"线程创建的方式是什么"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
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安全错误
数据库的锁怎样保障安全
哈尔滨大商圈互联网科技有限公司
科技互联网企业
科技股互联网
朗新科技与工业互联网
互联网中国科技
互联网科技金融公司
北京禾田雨橡互联网科技
左右互联网络科技
欧洲十大科技互联网公司
南平创想时代互联网科技有限公司
西安小鹰速贷互联网科技有限公司
深圳无忧互联网科技
广州千川互联网科技有限公司
易企秀互联网科技是做什么的
广州梦谷互联网科技有限公司领导
国产互联网科技公司
互联网科技平台产品运营
上海互联网科技园景观
高科技和互联网的现代国家
株洲百竞科技的互联网营销顾问
瑰夏咖啡
鑫亿盛互联网科技
汽车互联网创新科技园
互联网金融科技公司干啥的
华夏恒生科技与互联网科技
长沙互联网科技
工业互联网科技创业
互联网科技接地气
国产互联网科技公司
重庆科技产业互联网有哪些