多线程

1、线程和进程的区别?
运行的程序就是一个进程,一个进程中可以有多个线程(线程是程序执行的最小单元)
2、什么是主线程?有什么特点?
程序启动后就执行的那个线程称为主线程(primary thread),主线程有两
个特点,第一,它必须负责 GUI(Graphic User Interface)程序中的主消息循
环。第二,这一线程的结束(不论是因为返回或因为调用了 ExitThread())会
使得程序中的所有线程都被强迫结束,程序也因此而结束。其他线程没有机会
做清理工作。
3、线程创建有几种方式?
创建线程有三种方式

(1)通过继承Thread类,重写run()方法

(2)通过实现Runable接口,重写run()方法

(3)通过实现Callable接口,重写call()方法

4、线程如何启动?调用start方法和直接调用run方法有什么区别
(1)run方法中存放的是线程要执行的代码

(2)start() 用于开启一个线程,执行run()方法

(3)只有通过调用start()执行run()才会以多线程的方式执行,如果直接调用run(),就不会开启新的线程,

run()中的将会按顺序执行。

5、什么是线程优先级,优先级分为几级?
抢占cpu资源的能力称谓优先级,1-10级,有三个等级(MIN_PRIORITY、NORM_PRIORITY、MAX_PRIORITY)
6、线程有几种状态?什么时候位于什么样的状态?
(1).新建状态(New)
(2).阻塞状态(Blocked)
(3).运行状态(Runnable)
(4).休眠状态(Blocked)TIMED_WAITING)
(5).等待状态(WATITING)
(6).死亡状态(Dead)
7、什么是线程同步?线程同步会造成什么结果,线程同步使用什么关键字?
多个操作在同一时间内,只能有一个线程进行,其他的线程要等此线程执行完了之后才可以继续执行。
通过关键字synchronized来实现线程同步。
可以有两种方法,一种是代码块形式,一种是关键字修饰方法的形式
8、Wait和sleep的区别是什么?
1.相同点:
这两个方法都能使线程进入阻塞状态
2.不同点:
实现类不同
sleep不会释放“锁标志”,wait需要
sleep()方法可以在任何地方调用;而wait()方法只能在同步代码块或同步方法中使用(即使用synchronized关键字修饰的);
sleep()方法是Thread类中的静态方法;而wait()方法是Object类中的方法;
wait需要唤醒,sleep不需要

上一篇:v-cli npm run build 打包加一层目录


下一篇:打开gitlab报错502