
线程和进程的区别是啥呢?
一个进程就好比打开一个软件应用,但这个软件应用可能含有多个线程。
当然也有可能打开一个软件应用会同时进行多个进程,每个进程也有可能有多个线程。
一般来说面试时会问多线程的三种方式分别是什么:
1、继承Thread类
2、实现Runnable接口
3、实现Callable接口
有时面试官也会问多线程的四种方式分别是什么:
那第四种方式就是线程池方式。
package day1112;
// 继承Thread类
// 重写run方法
// 创建Thread子类对象
// 调用start方法
public class Runner1 extends Thread {
//重写run方法
@Override
public void run(){
for(int i = 0;i<10;i++)
System.out.println("Runner hello world !"+i);
}
public static void main(String[] args) {
Runner1 r = new Runner1();
r.start();//多线程调用
r.run();//方法调用
for(int i = 0;i<10;i++){
System.out.println("main"+i);
}
}
}
四、实现Runnable接口
package day1112;
//实现Runnable接口
//重写run方法
//创建实现类对象
//创建Thread对象,Runnable对象作为构造方法的实参
//调用start()方法
public class Runner2 implements Runnable{
@Override
public void run(){
for(int i = 0;i<10;i++) {
System.out.println("runner"+i);
}
}
public static void main(String[] args) {
Runner2 r = new Runner2();
Thread t = new Thread(r);
t.start();
for(int i = 0;i<10;i++){
System.out.println("main方法"+i);
}
}
}
五、实现Callable接口
package day1112; import java.util.concurrent.Callable; import java.util.concurrent.ExecutionException; import java.util.concurrent.FutureTask; //实现callable接口 //重写call方法 //创建Callable子类的实现类对象 //创建FutureTask对象,Callable对象作为构造方法实参 //创建Thread对象,FutureTask对象作为构造方法实参 //调用start()方法 class Testing{ public static void main(String[] args) throws ExecutionException, InterruptedException { Runner3 r1 = new Runner3(); Runner3 r2 = new Runner3(); FutureTask ft1 = new FutureTask(r1); FutureTask ft2 = new FutureTask(r2); Thread t1 = new Thread(ft1); Thread t2 = new Thread(ft2); t1.start();//t1.start();//一个线程重复调用start方法编译器通过,运行期报异常IllegalThreadStateException t2.start(); Integer a1 = (Integer) ft1.get(); Integer a2 = (Integer) ft2.get(); System.out.println("a1="+a1); System.out.println("a2="+a2); } } public class Runner3 implements Callable{ private int number = 20; @Override public Integer call() throws Exception{ int result; while(number >0){ System.out.println("还有雪地:"+number+"平方米未清扫"); number --; } return number; } }
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)