一、多线程创建方法
1、继承Tread类。
2、实现Runnable接口。(多用这个接口)
3、实现callable接口。
二、推荐使用实现Runnable接口
1、必须重写run()方法,run()方法是线程体。
2、Thread类可以通过start()方法将多线程交给虚拟机进行执行。
3、Runnable接口没有start()方法,需要借助新建Thread对象进行代理交给虚拟机执行。
public class ThreadTest implements Runnale{
int a;
ThreadTest(int b){
this.a = b;
}
public void run(){
//需要重写此方法
}
}
ThreadTest t = new ThreadTest(3);
new Thread(t).start()
//通过Thread代理启动多线程
三、代码实现方式一
1、启动后通过t.start()将多线程对象交给CPU处理,不会等他结束,继续向下执行代码两条路同时进行。
2、如果是调用t.run()方法只是普通的调用方法,等多线程对象里面执行结束才回来继续向下执行。
/**
* 创建线程方式一
* @author 鹏鹏
*
*/
public class TestThread extends Thread{
@Override
public void run() {
for(int i=0;i<30;i++)
{
System.out.println("一遍视频");
}
}
public static void main(String[] args) {
//创建子线程对象
TestThread t = new TestThread();
//启动
t.start();
for(int i=0;i<30;i++) {
System.out.println("一遍代码");
}
}
}
3、如果将main方法的循环放在创建多线程对象之前则会先执行完30次“一遍代码”才会执行多线程。
public static void main(String[] args) {
for(int i=0;i<30;i++) {
System.out.println("一遍代码");
}
//创建子线程对象
TestThread t = new TestThread();
//启动
t.start();
}
四、代码实现方式2:实现Runnable接口下载网络图片
1、需要用代理接口Thread进行启动多线程
2、需要Commons-io-1.2.4.jar
public class WebDownloader {
public void download(String url,String name) {
try {
FileUtils.copyURLToFile(new URL(url),new File(name));
} catch (MalformedURLException e) {
e.printStackTrace();
System.out.println("不合法的路径");
} catch (IOException e) {
e.printStackTrace();
System.out.println("下载失败");
}
}
}
public class TestRunnable implements Runnable{
String url;
String name;
public TestRunnable(String url,String name) {
this.url = url;
this.name = name;
}
public void run() {
WebDownloader wd = new WebDownloader();
wd.download(url, name);
System.out.println("runnable"+name);
}
public static void main(String[] args) {
TestRunnable t1 = new TestRunnable("https://ns-strategy.cdn.bcebos.com/ns-strategy/upload/fc_big_pic/part-00779-2260.jpg", "图片1.jpg");
TestRunnable t2 = new TestRunnable("https://ss1.bdstatic.com/70cFvXSh_Q1YnxGkpoWK1HF6hhy/it/u=3512181219,2527704296&fm=26&gp=0.jpg", "图片2.jpg");
TestRunnable t3 = new TestRunnable("http://a4.att.hudong.com/21/09/01200000026352136359091694357.jpg", "图片3.jpg");
new Thread(t1).start();
new Thread(t2).start();
new Thread(t3).start();
}
}