线程,进程,多线程
继承Thread类
//创建线程方式一:继承Thread类,重写run()方法,调用start开启线程
线程开始不一定立即执行,由CPU调度执行
package com.mysoft.demo01;
//创建线程方式一:继承Thread类,重写run()方法,调用start开启线程
//总结:注意,线程开始不一定立即执行,由CPU调度执行
public class TestThread01 extends Thread {
@Override
public void run() {
//run方法线程体
for (int i = 0; i < 10; i++) {
System.out.println("我在看代码---"+i);
}
}
public static void main(String[] args) {
//main线程,主线程
//创建一个线程对象
TestThread01 testThread01 = new TestThread01();
//调用start()方法开启线程
testThread01.start();
for (int i = 0; i < 10; i++) {
System.out.println("我在学习多线程--"+i);
}
}
}
每次的执行效果都不一样。
穿插着输出内容,比如某一次的执行结果:
我在学习多线程--0
我在学习多线程--1
我在看代码---0
我在学习多线程--2
我在看代码---1
我在学习多线程--3
我在看代码---2
我在学习多线程--4
我在看代码---3
我在学习多线程--5
我在看代码---4
我在学习多线程--6
我在看代码---5
我在学习多线程--7
我在看代码---6
我在学习多线程--8
我在看代码---7
我在学习多线程--9
我在看代码---8
我在看代码---9
案例:下载图片
注意一下:实装时的顺序 以及方法参数后补充的技巧!
TestThread02.java
package com.mysoft.demo01;
import org.apache.commons.io.FileUtils;
import java.io.File;
import java.io.IOException;
import java.net.URL;
//练习Thread,实现多线程同步下载图片
public class TestThread02 extends Thread {
// (第3步)
private String url;//网络图片的地址
private String name;//保存的文件名
public TestThread02(String url, String name) {
this.url = url;
this.name = name;
}
// (第2步:继承Tread,然后重写run方法)
@Override
public void run() {
WebDownloader webDownloader = new WebDownloader();
webDownloader.downloader(url, name);
System.out.println("下载了文件:" + name);
}
// (第4步)
public static void main(String[] args) {
//图片url可以网页上找到后按F12,然后选中鼠标箭头点击图片找到图片的url。
TestThread02 t1 = new TestThread02("https://seopic.699pic.com/photo/50136/9491.jpg_wh1200.jpg", "1.png");
TestThread02 t2 = new TestThread02("https://seopic.699pic.com/photo/50352/3318.jpg_wh1200.jpg", "2.png");
TestThread02 t3 = new TestThread02("https://seopic.699pic.com/photo/32732/2427.jpg_wh1200.jpg", "3.png");
//先下载t1
t1.start();
//然后是t2
t2.start();
//最后是t3
t3.start();
}
}
//下载器 (第1步)
class WebDownloader {
//下载方法
public void downloader(String url, String name) {
try {
FileUtils.copyURLToFile(new URL(url), new File(name));
} catch (IOException e) {
e.printStackTrace();
System.out.println("IO异常,downloder方法出现问题");
}
}
}
下载图片的执行顺序不是固定的,每次都可能变动。
比如:
下载了文件:3.png
下载了文件:1.png
下载了文件:2.png