当前位置:
首页 >
Java的知识点25——程序、进程与线程 || 线程的创建和启动
发布时间:2025/4/16
35
豆豆
生活随笔
收集整理的这篇文章主要介绍了
Java的知识点25——程序、进程与线程 || 线程的创建和启动
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
程序、进程与线程
进程的特点:动态性、并发性、独立性
并发和并行的区别
并发:多个CPU同时执行多个任务
并行:一个CPU(采用时间片)同时执行多个任务
注:很多多线程是模拟出来的,真正的多线程是指有多个cpu,即多核,如服务器。如果是模拟出来的多线程,即在一个cpu的情况下,在同一个时间点,cpu只能执行一个代码,因为线程之间切换很快,所以就有同时执行的错觉。
线程的创建和启动
线程的创建
• 方式1:继承Java.lang.Thread类,并覆盖run() 方法
• 方式2:实现Java.lang.Runnable接口,并实现run() 方法
• 方式3:实现callable接口
注:run( )称为线程体
创建线程方式一:
* 1. 创建:继承Thread+重写run
* 2. 启动:创建子类对象+start()方法(不保证立即运行 由cpu去调用)
WebDownloader.java
/*** 下载图片 * @author Administrator**/ import java.io.File; import java.io.IOException; import java.net.MalformedURLException; import java.net.URL;import org.apache.commons.io.FileUtils;public class WebDownloader {/*** 下载* @param url* @param name*/public void download(String url,String name) {try {FileUtils.copyURLToFile(new URL(url), new File(name));} catch (MalformedURLException e) {e.printStackTrace();System.out.println("不合法的url");} catch (IOException e) {e.printStackTrace();System.out.println("下载失败"); }} }TDownloader.java
public class TDownloader extends Thread {private String url; //远程路径private String name; // 存储名字public TDownloader(String url, String name) {super();this.url = url;this.name = name;}@Overridepublic void run() { super.run();WebDownloader wd= new WebDownloader();wd.download(url, name);System.out.println(name);}public static void main(String[] args) {TDownloader td1=new TDownloader("http://img4.3lian.com/sucai/img3/399/01+.jpg", "1.jpg");TDownloader td2=new TDownloader("http://img4.3lian.com/sucai/img3/399/10+.jpg", "2.jpg");TDownloader td3=new TDownloader("http://img4.3lian.com/sucai/img3/399/15+.jpg", "3.jpg");//启动三个线程td1.start();td2.start();td3.start();} }注:必须在工程目录下,导入此文件
创建线程方式二:
* 1. 创建:实现Runnable+重写run
* 2. 启动:创建实现类对象+Thread对象+start()方法
推荐使用Runnable接口:避免单继承的局限性,优先使用接口
* 优点:方便共享资源
采用Runnable接口,对TDownloader.java 进行修改为IDownloader.java 实现上面的效果
public class IDownloader implements Runnable{private String url; //远程路径private String name; // 存储名字public IDownloader(String url, String name) {super();this.url = url;this.name = name;}@Overridepublic void run() { WebDownloader wd= new WebDownloader();wd.download(url, name);System.out.println(name);}public static void main(String[] args) {IDownloader td1=new IDownloader("http://img4.3lian.com/sucai/img3/399/01+.jpg", "1.jpg");IDownloader td2=new IDownloader("http://img4.3lian.com/sucai/img3/399/10+.jpg", "2.jpg");IDownloader td3=new IDownloader("http://img4.3lian.com/sucai/img3/399/15+.jpg", "3.jpg");//启动三个线程new Thread(td1).start();new Thread(td2).start();new Thread(td3).start();} }
《新程序员》:云原生和全面数字化实践50位技术专家共同创作,文字、视频、音频交互阅读
总结
以上是生活随笔为你收集整理的Java的知识点25——程序、进程与线程 || 线程的创建和启动的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: 数据库知识点1
- 下一篇: Java知识点26——模拟12306买票