1:Thread 类中的start() 和 run() 方法有什么区别?
调用start()得到一个线程并使它就绪等待cpu调度;调用run()没有得到新线程它在主线程里顺序执行!。
调用start方法方可启动线程,而调用run方法只是thread的一个普通方法调用,还是在主线程里执行。
2:有哪些方法创建线程?
(1)继承Thread类重写run方法;
(2)实现Runnable接口实现run方法;
(3)实现Collable接口实现call方法;
方法三实例:
Collable接口定义如下:
public interface Callable<V>
{
V call() throws Exception;
}
步骤1:创建实现Callable接口的类SomeCallable<Integer>(略);
步骤2:创建一个类对象:
Callable<Integer> oneCallable = new SomeCallable<Integer>();
步骤3:由Callable<Integer>创建一个FutureTask<Integer>对象:
FutureTask<Integer> oneTask = new FutureTask<Integer>(oneCallable);
注释:FutureTask<Integer>是一个包装器,它通过接受Callable<Integer>来创建,它同时实现了Future和Runnable接口。
步骤4:由FutureTask<Integer>创建一个Thread对象:
Thread oneThread = new Thread(oneTask);
步骤5:启动线程:
oneThread.start();