Java多线程(1):创建多线程

一、多线程创建方法

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();
		}
	
	}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

coder鹏鹏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值