Java_多线程
时间:2021-07-15
本文章向大家介绍Java_多线程,主要包括Java_多线程使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
进程和线程
在程序运行时,即使自己没有创建线程,也会默认有main主线程,以及gc线程(main线程是调用整个程序的主入口,gc线程是jvm里的垃圾回收机制)
注意:线程开始不一定执行,由cpu调度执行
线程的创建方式:
1.继承Thread类,实现run()方法 *(不推荐)
2.实现runnable接口, *(推荐)
3.实现callable接口,
方式1:
案例1:
1 package com.thread.create; 2 3 // 创建线程的第一种方式: 继承Thread类,重写run()方法,调用start()方法开启线程 4 public class ThreadCreateForm01 extends Thread{ 5 @Override 6 public void run() { 7 8 for (int i = 0; i < 20; i++) { 9 System.out.println("我是重写的run()的线程" + i); 10 } 11 } 12 13 public static void main(String[] args) { 14 // 创建线程的对象 15 ThreadCreateForm01 thread01 = new ThreadCreateForm01(); 16 // 开启线程 17 thread01.start(); 18 19 // 程序的主线程main()方法 20 for (int i = 0; i < 500; i++) { 21 System.out.println("我是main()线程" + i); 22 } 23 } 24 }
案例:下载图片 代码
1 package com.thread.create; 2 3 import org.apache.commons.io.FileUtils; 4 5 import java.io.File; 6 import java.io.IOException; 7 import java.net.URL; 8 9 public class ImageDown extends Thread{ 10 11 private String url; 12 private String name; 13 14 15 public ImageDown() { 16 } 17 18 public ImageDown(String url, String name) { 19 this.url = url; 20 this.name = name; 21 } 22 23 @Override 24 public void run() { 25 WebImageDown webImageDown = new WebImageDown(); 26 webImageDown.downLoader(url,name); 27 System.out.println("下载了图片"+name); 28 } 29 30 public static void main(String[] args) { 31 ImageDown thread1 = new ImageDown("https://pic.cnblogs.com/avatar/812339/20150919164020.png","thread1.png"); 32 ImageDown thread2 = new ImageDown("https://pic.cnblogs.com/avatar/812339/20150919164020.png","thread2.png"); 33 ImageDown thread3 = new ImageDown("https://pic.cnblogs.com/avatar/812339/20150919164020.png","thread3.png"); 34 thread1.start(); 35 thread2.start(); 36 thread3.start(); 37 } 38 39 } 40 41 // 下载器 42 class WebImageDown{ 43 // 下载方法 44 public void downLoader(String url, String name){ 45 try { 46 FileUtils.copyURLToFile(new URL(url), new File(name)); 47 } catch (IOException e) { 48 e.printStackTrace(); 49 System.out.println("IO异常:下载文件报错"); 50 } 51 } 52 }
先在lib下面导入 commons.io 包,
运行结果
原文地址:https://www.cnblogs.com/1123-wyl/p/15014951.html
- 怎样做情感分析
- Python|编写自己的类
- 碎片化 | 第四阶段-45-session为空问题解决-视频
- 以后有机会写框架用得着的
- 合并两个不相关的Git仓库
- 用 Tensorflow 建立 CNN
- 碎片化 | 第四阶段-36-struts-spring结合jdbc实现删除功能-视频
- 跨域访问支持(Spring Boot、Nginx、浏览器)
- 自己动手写个聊天机器人吧
- 碎片化 | 第四阶段-37-sturts2-登录功能实现-视频
- Spring Cloud Edgware新特性之六:Artifact ID变更
- 用 RNN 训练语言模型生成文本
- 碎片化 | 第四阶段-38-Struts2登录session对象封装-视频
- LeetCode实战:子问题分析
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- 隐私策略更新 | Android 11 应用兼容性适配
- Android android:exported = true 用法详解
- Android WorkManager浅谈
- 详解Android 8.0以上系统应用如何保活
- 秒级去重:ClickHouse在腾讯海量游戏营销活动分析中的应用
- android studio 3.4配置Android -jni 开发基础的教程详解
- android TextView中识别多个url并分别点击跳转方法详解
- Android WebView支持input file启用相机/选取照片功能
- 谈谈RxJava2中的异常及处理方法
- Android Koin2基本使用的那件事儿
- 一篇文章弄懂kotlin的扩展方法
- 浅谈Android客户端与服务器的数据交互总结
- Android 连接匿名WiFi的示例代码
- Android自定义图文跑马灯效果
- Android自定义View实现可展开、会呼吸的按钮