java 多线程的经验总结
什么是线程?
线程是操作系统所能运算调度的最小单元,包含于进程之中,作为进程的实际运作单位;线程与进程的区别,线程是进程的子集,一个进程可以有多个线程,每个线程并行执行不同的任务,不同的进程使用不同的内存空间,而所有线程共享一片相同的内存空间,但是每个线程都拥有单独的栈内存用来储存本地数据
Java中实现线程
在语言层面上存在两种方式实现,java.lang.Thread 类的实例就是一个线程但是它需要调用java.lang.Runnable接口来执行,由于线程类本身就是调用的Runnable接口所以你可以继承java.lang.Thread 类或者直接调用Runnable接口来重写run()方法实现线程;而使用Runnable还是使用Thread更好呢?我们知道Java不支持类的多重继承,但允许你调用多个接口。所以如果你要继承其他类的话,当然是调用Runnable接口好了
Thread 类中的start() 和 run() 方法有什么区别?
start()方法被用来启动新创建的线程,而且start()内部调用了run()方法,这和直接调用run()方法的效果不一样的,当你直接调用run()方法的时候,只会是在原来的线程中调用,没有新的线程启动,只有start()方法才会启动新线程
Java中Runnable和Callable有什么不同?
Runnable和Callable都代表那些要在不同的线程中执行的任务,它们的主要区别是Callable的 call() 方法可以返回值和抛出异常,而Runnable的run()方法没有这些功能。Callable可以返回装载有计算结果的Future对象