欢迎访问 生活随笔!

生活随笔

当前位置: 首页 >

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去调用)

/*** 创建线程方式一:* 1. 创建:继承Thread+重写run* 2. 启动:创建子类对象+start()方法* @author Administrator**/ public class StartThread extends Thread{//线程入口点public void run() {super.run();for(int i=0;i<20;i++) {System.out.println("一边听歌");}}public static void main(String[] args) {//创建子类对象StartThread st=new StartThread();//启动线程st.start(); // st.run(); //普通方法的调用for(int i=0;i<20;i++) {System.out.println("一边coding");}} }

 


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接口:避免单继承的局限性,优先使用接口
 * 优点:方便共享资源

/*** 创建线程方式二:* 1. 创建:实现Runnable+重写run* 2. 启动:创建实现类对象+Thread对象+start()方法* @author Administrator**/ public class StartRun implements Runnable{//线程入口点public void run() {for(int i=0;i<20;i++) {System.out.println("一边听歌");}}public static void main(String[] args) { // //创建实现类对象 // StartRun sr=new StartRun(); // //创建代理类对象 // Thread t=new Thread(sr); // //启动 // t.start();new Thread(new StartRun()).start();for(int i=0;i<20;i++) {System.out.println("一边coding");}} }

 


采用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——程序、进程与线程 || 线程的创建和启动的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。