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();
}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java实现多线程有以下几种方式: 1. 继承Thread类:创建一个继承自Thread类的子类,并重其run()方法来定义线程的执行逻辑。然后通过创建子类的实例并调用start()方法来启动线程。 ```java class MyThread extends Thread { public void run() { // 线程执行逻辑 } } // 创建线程实例并启动 MyThread thread = new MyThread(); thread.start(); ``` 2. 实现Runnable接口:创建一个实现了Runnable接口的类,并实现其run()方法。然后通过创建该类的实例,并将其作为参数传递给Thread类的构造函数来创建线程对象。 ```java class MyRunnable implements Runnable { public void run() { // 线程执行逻辑 } } // 创建线程实例并启动 MyRunnable runnable = new MyRunnable(); Thread thread = new Thread(runnable); thread.start(); ``` 3. 使用Callable和Future:创建一个实现了Callable接口的类,并实现其call()方法。然后通过创建该类的实例,并将其作为参数传递给ExecutorService的submit()方法来提交任务,并返回一个Future对象,通过该对象可以获取任务的执行结果。 ```java import java.util.concurrent.Callable; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.Future; class MyCallable implements Callable<Integer> { public Integer call() { // 线程执行逻辑 return 1; } } // 创建线程池 ExecutorService executor = Executors.newFixedThreadPool(1); // 提交任务并获取Future对象 MyCallable callable = new MyCallable(); Future<Integer> future = executor.submit(callable); // 获取任务的执行结果 try { Integer result = future.get(); // 处理结果 } catch (Exception e) { // 异常处理 } finally { // 关闭线程池 executor.shutdown(); } ``` 以上是Java实现多线程的几种方式。你可以根据具体的需求选择适合的方式实现多线程功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值