java有几种方法可以实现一个线程?用什么关键字修饰同步方法?

  1. java多线程实现方法主要有3种:继承Thread类、实现Runnable接口和使用ExecutorService、callable、future实现有返回结果的多线程。其中前2方式线程执行完后都没有返回值,只有最后一种有返回值。
  2. 继承Thread类启动线程的唯一方法是通过Thread类的start()实例方法。start()方法是一种native方法,它将启动一个新线程并执行run方法。这种方法通过自己的类直接extend Thread,并复写run()方法,就可以启动新线程并执行自己定义的run()方法。
    public class MyThread extends Thread{
    	public void run(){
    		System.out.println("myThread start...");
    	}
    }

  3. 通过实现Runnable接口实现多线程。如果自己的类已经extends了另一个类,就无法直接extends Thread类,只能通过实践Runnable接口实现多线程。如下
    public class MyThread extends OtherClss implements Runnable{
    	public void run(){
    		System.out.println("myThread start...");
    	}
    }
    启动时先实例化Thread类,然后将自己的MyThread实例传入,
    Thread thread = new Thread(new MyThread);
    thread.start();事实上当传入一个Runnable target参数给Thread后,Thread的run()方法会调用target.run(),参考jdk源码
	public void run (){
		if(target != null){
			target.run();
		}
	}

你可能感兴趣的:(面试)