继承Thread类
1.自定义线程类继承Thread类
2.重写run()方法,编写线程执行体
3.创建线程对象,调用start()方法启动线程
-注意:线程开启不一定立即执行,由CPU调度执行
//创建线程方法一:继承Thread类,重写run()方法,调用start开启线程
public class TestThread1 extends Thread{@Overridepublic void run() {//run方法线程体for (int i = 0; i < 20; i++) {System.out.println("我在敲代码---"+ i);}}public static void main(String[] args) {//mian线程,主线程//创建一个线程对象TestThread1 testThread1 = new TestThread1();//开启线程testThread1.start();for (int i = 0; i < 20; i++) {System.out.println("我在学习多线程---" + i);}}
}
网图下载:
//实现多线程同步下载图片
public class TestThread2 extends Thread{private String url;//网络图片地址private String name;//保存文件名public TestThread2(String url,String name){this.url = url;this.name =name;}//下载图片线程的执行体@Overridepublic void run() {WeDownloader weDownloader = new WeDownloader();weDownloader.downloader(url,name);System.out.println("下载了文件名为:" + name);}public static void main(String[] args) {TestThread2 t1 = new TestThread2("https://i-blog.csdnimg.cn/direct/71122db47a024d05b50daedfac6221d4.png", "4.png");TestThread2 t2 = new TestThread2("https://i-blog.csdnimg.cn/img_convert/aa841f7c7d7d281d1d012d9a06a31d53.jpeg", "5.jpeg");TestThread2 t3 = new TestThread2("https://i-blog.csdnimg.cn/direct/0e2270afec474c88bcb7e5d721c79011.jpeg", "6.jpeg");t1.start();t2.start();t3.start();}}//下载器
class WeDownloader{//下载方法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异常,downloader方法出现问题");}}}