多线程Thread的实现方法。通过继承Thread和实现Runnable接口。

本文介绍了Java中实现多线程的三种方法,包括继承Thread类和实现Runnable接口,强调了推荐使用接口的原因及run方法的异常处理规则。
摘要由CSDN通过智能技术生成

多线程有三种实现方法。推荐优先使用接口,避免单继承的局限性,同时也方便共享资源。
run方法不能抛出异常!!

创建线程方式一:

1、创建:继承Thread+重写run
2、启动:创建子类对象+start
例:

public class StartThread extends Thread {
	
	/**
	 * 线程的入口点
	 */
	@Override
	public void run() {
		
		for(int i = 0;i < 20;i++) {
			System.out.println("一边听歌");
		}
		
	}
	public static void main(String[] args) {
		//创建子类对象
		StartThread st = new StartThread();
		//启动
		st.start();//不保证立即运行 cpu调用
		//st.run();//普通方法的调用
		for(int i = 0;i < 20;i++) {
			System.out.println("一边coding");
		}
	}
}

创建线程方式二:

1、创建:实现Thread + 重写run
2、启动:创建实现类对象 + Thread对象 + start

public class StartRun implements Runnable {
	
	/**
	 * 线程的入口点
	 */
	@Override
	public void run() {
		
		for(int i = 0;i < 20;i++) {
			System.out.println("一边听歌");
		}
		
	}
	
	public static void main(String[] args) {
	/*	//创建实现类对象
		StartRun sr = new StartRun();
		//创建代理类对象
		Thread t = new Thread(sr);
		//启动
		t.start();//不保证立即运行 cpu调用
		*/
		new Thread(new StartRun()).start();;
		
		//st.run();//普通方法的调用
		for(int i = 0;i < 20;i++) {
			System.out.println("一边coding");
		}
	}
}

了解创建线程的方式三:

实现callable接口+重写call方法

public class CDownloader implements Callable<Boolean> {
	
	private String url;//远程路径
	private String name;//存储名字
	
	public CDownloader(String url, String name) {
		this.url = url;
		this.name = name;
	}

	@Override
	public Boolean call() throws Exception {
		WebDownloader wd = new WebDownloader();
		wd.downLoad(url, name);
		System.out.println(name);
		return true;
	}

	public static void main(String[] args) throws InterruptedException, ExecutionException {
		CDownloader cd1 = new CDownloader("http://tiebapic.baidu.com/forum/w%3D580%3B/sign=e23e1f4d80dda144da096cba828cd2a2/ae51f3deb48f8c547a077e712d292df5e1fe7f9c.jpg", "boy.jpg");
		CDownloader cd2 = new CDownloader("http://tiebapic.baidu.com/forum/w%3D580%3B/sign=222efae1b7ec08fa260013af69d53c6d/359b033b5bb5c9e ac0e35dbdc239b6003af3b358.jpg", "girl.jpg");
		CDownloader cd3 = new CDownloader("http://tiebapic.baidu.com/forum/w%3D580%3B/sign=a2bf77641bd79123e0e0947c9d0f5882/9c16fdfaaf51f3dedcb09e0883eef01f3a29795f.jpg", "butterfly.jpg");
		
		//创建执行服务:
		ExecutorService ser = Executors.newFixedThreadPool(3);
		//提交执行:
		Future<Boolean> result1 = ser.submit(cd1);
		Future<Boolean> result2 = ser.submit(cd2);
		Future<Boolean> result3 = ser.submit(cd3);
		//获取结果:
		boolean r1 = result1.get();
		boolean r2 = result1.get();
		boolean r3 = result1.get();
		
		System.out.println(r3);
		//关闭服务:
		ser.shutdownNow();
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值