继承Thread类实现多线程
继承Thread类实现多线程
- Thread类所属的包和实现的接口
-
继承Thread类实现多线程的具体步骤:先继承Thread类,然后再重写Thread类的run()方法。
-
以下是一个从网上下载图片的例子:
- 先创建一个下载器Picdownloader
import org.apache.commons.io.FileUtils; import java.io.File; import java.io.IOException; import java.net.URL; public class Picdowmloader { public void dowmLoad(String url,String name){ try { FileUtils.copyURLToFile(new URL(url),new File("name")); } catch (IOException e) { e.printStackTrace(); } } }
-
在创建一个线程测试类TestThread
-
运行结果
-
可以看到图片并不是按照顺序下载的,说明我们的进程创建成功。
-
犯下的错误
- 刚开始写测试类时,写成了下面的代码,导致了只是实现了下载图片的功能,并没有体现到多线程,说明对多线程还是不是很熟悉。
- 在使用org.apache.commons.io.FileUtils中的FileUtils.copyURLToFile方法时,把url当成是String类型的了,要把String类型的地址转化成URL,需要new URL(String)。
-
实现Runnable接口实现多线程(用到静态代理)
- Thread类所属的包和实现的接口
-
实现Runnable接口实现多线程的具体步骤:实现接口,实现run方法,然后在new Thread(testThread1).start()开启线程。
-
以下是一个从网上下载图片的例子:
- 先创建一个下载器Picdownloader
import org.apache.commons.io.FileUtils; import java.io.File; import java.io.IOException; import java.net.URL; public class Picdowmloader { public void dowmLoad(String url,String name){ try { FileUtils.copyURLToFile(new URL(url),new File("name")); } catch (IOException e) { e.printStackTrace(); } } }
-
在创建一个线程测试类TestThread
-
运行结果
-
可以看到图片并不是按照顺序下载的,说明我们的进程创建成功。
-