1.进程和线程的区别:
进程:内存分配的最小单位;
线程:程序执行的最小单位;
一个进程有多个线程,一个线程只能在一个进程中;
线程与进程的主要区别在于:每个进程都需要操作系统为其分配独立的内 存地址空间,而同一进程中的所有线程在同一块地址;
2. sleep()和wait()的区别:
sleep():是线程类(Thread)中的静态方法,线程调用该方法进入睡眠状态 (阻塞状态),当睡眠时间结束,进入就绪状态,和其他线程一样抢 到CPU后,开始运行,当一个锁块中调用sleep()方法时,线程虽然进 行休眠,但并没有释放锁;
wait():是Object类中的一种方法,线程执行wait()方法时,该线程就进入到 等待池中(阻塞状态),但与sleep()不同的是,该方法执行后会释放 锁资源,使得其他线程可以访问,使用nofity()和nofityAll()唤醒等待的 线程;
3.nofity()和nofityAll()的区别:
二者相同点是都属于Object类,都可以唤醒等待的“线程”;
nofity():唤醒此同步监视器上等待的单个线程,如果所有线程都在此同步监 视器上等待,就会唤醒其中任意一个线程,只有当前线程使用了 wait()方法后,才可以执行被唤醒的线程;
nofityAll():唤醒在此同步监视器上等待的所有线程,只有当前线程使用了 wait()方法,才可以执行被唤醒的线程;
4.线程中的run()和start()方法的区别:
run():是线程里的一个函数,并不多线程,如果直接调用run()方法,必须等 待run()方法执行完,才会执行下面的代码,并不能体现线程的特征, 该方法也被称为线程体;
start():是执行线程,实现了多线程的运行,执行该方法后线程进入 就 绪状态,通过Thread类调用run()方法(run()方法中包含这个线程要 执行的内容),使线程进入到运行状态,run()方法没有执行完也可 以执行下面的代码,但要看是谁先抢占到cpu,run()方法执行完毕, 代表线程终止;