创建线程方式二(推荐使用)
1.创建:实现Runnable + 重写run
2.启动:创建实现类对象+Thread对象 + start
推荐使用这种方法,可以避免继承的局限性,优先使用接口
以下代码可以参考
package com.cb.thread;
/*
* 创建线程方式二
* 1.创建:实现Runnable + 重写run
* 2.启动:创建实现类对象+Thread对象 + start
*
* 推荐:避免单继承的局限性,优先使用接口
*/
public class StartRunnable01 implements Runnable{
@Override
public void run() {
for (int i = 0; i < 20; i++) {
System.out.println("一边听歌");
}
}
public static void main(String[] args) {
/*//创建实现类对象
StartThread02 st = new StartThread02();
//创建代理类对象
Thread td = new Thread(st);
//启动线程
td.start();*/
new Thread(new StartRunnable01()).start();;
for (int i = 0; i < 20; i++) {
System.out.println("一边敲代码");
}
}
}
用实现Runnable接口写一个开户三个线程下载图片的案例
package com.cb.thread;
/*
* 创建线程方式二
* 1.创建:实现Runnable + 重写run
* 2.启动:创建实现类对象+Thread对象 + start
*
* 推荐:避免单继承的局限性,优先使用接口
*/
public class IDownloader implements Runnable {
private String url; //图片地址
private String name; //存储名字
public IDownloader(String url,String name) {
this.url = url;
this.name = name;
}
public void run() {
WebDownloader wd = new WebDownloader();
wd.downloader(url, name);
}
public static void main(String[] args) {
IDownloader td1 = new IDownloader("http://pic1.win4000.com/wallpaper/c/579f1942850a7.jpg", "杨洋");
IDownloader td2 = new IDownloader("http://file06.16sucai.com/2016/0420/faa06f4f0566466e800885110a56cc32.jpg", "婴儿");
IDownloader td3 = new IDownloader("https://pic.sogou.com/pics/recompic/detail.jsp?category=%E6%98%8E%E6%98%9F&tag=%E5%90%B4%E4%BA%A6%E5%87%A1#33%2617313718", "吴亦凡");
new Thread(td1).start();
new Thread(td2).start();
new Thread(td3).start();
}
}