java多线程实现的方式

自学回顾
多线程实现三种方式:
1.继承Thread父类实现多线程
MyThread类继承Thread在run()方法中编写需要进行多线程处理的业务逻辑
MyThreadDemo类中进行测试:
1…创建MyThread类的实例
2…通过实例进行调用start()方法
面试题:run()方法和start()方法区别:
run()方法只是封装 了需要多线程处理的业务,直接调用run()方法无法实现多线程,调用start()方法实际上做了两个工作,先启动多线程,然后通过jvm(虚拟机)调用run()方法
MyThread类:
public class MyThread extends Thread {

@Override
public void run() {
	//System.out.println("好好学习");
	for(int x = 0;x<100;x++) {
		System.out.println(x);
	}
}

}
MyThreadDemo类:
public class MyThreadDemo {
public static void main(String[] args) {
MyThread mt1 = new MyThread();
MyThread mt2 = new MyThread();
mt1.start();
mt2.start();
}
}
2.通过实现Runnable接口实现多线程
通过MyRunnable类实现Runnable接口在其中的run()方法中写入需要多线程处理的业务,通过MyRunnableDemo类测试,首先创建Runnable对象,然后创建Thread对象,并将Runnable对象传入Thread中,通过Thread对象调用start()方法
MyRunnable类:
public class MyRunnalbe implements Runnable {
@Override
public void run() {
for(int x=0;x<100;x++) {
System.out.println(Thread.currentThread().getName()+":"+x);
}
}
}
MyRunnableDemo类
public class MyRunnableDemo {

public static void main(String[] args) {
	//C:创建MyRunnable对象
	MyRunnalbe mr = new MyRunnalbe();
	//Thread(Runnable target, String name) 分配一个新的 Thread对象。
	Thread t1 = new Thread(mr,"可乐");
	Thread t2 = new Thread(mr,"雪碧");
	t1.start();
	t2.start();
}

}
可以通过t1.setname()方法给线程命名也可以直接当作参数传入。
3.实现Callable接口实现多线程,此方法依赖线程池
在MyCallable类call()方法中写入需要多线程处理的业务,在MyCallableDemo类中测试,需要在MyCallableDemo类中实现线程池:
ExecutorService pool = Executors.newFixedThreadPool(2);
指定线程池线程数量
通过pool.submit()方法调用启动多线程,最后通过pool.shutdow()方法关闭线程池
MyCallable类:
public class MyCallable implements Callable {

@Override
public Object call() throws Exception {
	for(int x=0;x<100;x++) {
		System.out.println(Thread.currentThread().getName()+":"+x);
	}
	return null;
}

}
MyCallableDemo类:
public class CallableDemo {

public static void main(String[] args) {
	ExecutorService pool = Executors.newFixedThreadPool(2);
	
	pool.submit(new MyCallable());
	pool.submit(new MyCallable());
	pool.shutdown();
}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值