日常小记
1、什么是线程
线程是操作系统能够运行调度的最小单位,它被包含在进程中,是进程中的实际运作单位。可以通过使用多线程对计算密集型任务提速。多线程有个缺点,是任何一个线程挂掉都可能直接造成整个进程崩溃,因为所有线程共享进程的内存。
2、线程和进程的一些区别
线程是进程的子集,即一个进程可以有多个线程(假若一个线程的占内存为1MB,系统内存为2GB,则最多开2048个线程),每个线程并行执行不同的任务。不同的进程使用不同的内存空间,而所有的线程共享一片相同的内存空间,但每个线程都拥有单独的栈内存用来存储本地数据。
3、如何在Java中实现多线程
1)继承Thread 类,重写run()方法。java.lang.Thread 类本质上是实现了java.lang.Runnable接口的一个实例,且启动线程的唯一方法是通过Thread 类的start()方法。该方法是一个native(本地)方法,它将启动一个新线程,并执行run()方法。调用start()方法后并不是立即执行多线程代码,而是将线程变为可运行态,什么时候运行多线程代码由操作系统决定。
2)实现Runnable接口,并实现该接口的run()方法。
主要步骤为:1.自定义类并实现Runnable接口,实现run()方法。
2.创建Thread 对象,用实现Runnable接口的对象作为参数实例化该Thread 对象。
3.调用Thread 的start()方法。
4、用Runnable还是Thread
Java不支持类的多重继承,但允许实现多个接口。如果在实现线程的时候要继承其他类,则应实现Runnable接口比较好。
5、start()和run() 方法有什么区别
start()方法被用来启动新创建的线程,是该线程处于就绪状态,则这个线程可被JVM来调度执行。在调度过程中,JVM通过调用线程类的run()方法来完成实际操作,当run()方法结束,线程终止。
直接调用run() 方法,该方法会被当做一个普通的函数调用。
通俗的说,start()方法被用来启动新创建的线程,而且start()内部调用了run()方法。而直接调用run()方法时,只会是在原来的线程中调用,没有新的线程启动。