1.什么是进程?
线程就是系统中正在运行的程序,程序一旦运行就是进程,每个进程都有独立的地址空间,一个进程无法访问另一个进程的变量和数据结构,想要访问,需要使用进程通信,比如管道.文件等
2.什么是线程?
线程就是系统能够进行的最小调度单位,他被包含在进程中,一个进程中可以有多个并发的线程,每条线程执行不同的任务.
3.线程实现的方式?
继承Thread类
实现Runnable接口
使用Callable的Future
或者使用线程池
4.Thread的start()方法和run()方法有什么区别?
start方法是启动线程,真正实现了多线程通过调用thread类的start方法来启动一个线程,这是线程就处于就绪状态,并没运行,然后通过run方法来完成线程运行,run方法运行结束,线程终止,cpu调度其他线程
5.线程的状态
6.如何知道代码段被哪个线程带调用
通过获取线程的名称就可以知道了
Thread.currentThread().getName()
7.sleep()方法
是在指定的毫秒数内,让当前的正在执行的线程进入休眠状态
8.yield()方法
放弃当前cpu资源,让给其他任务.
9.线程的优先级
线程的优先级是获取cpu资源比较多,但是不能保证一定优先级高,就先执行
优先级分为1-10个等级,数字越大优先级越高,默认优先级是5,超出优先级范围会抛出异常
优先级是具有继承性的,比如a线程启动b线程,那么b线程和a线程优先级是一样的
设置优先级使用 setPriority(级别)方法
10线程分类?
用户线程
守护线程
11.守护线程的特点?
守护线程用做程序中后台调度支持性工作,比如java中经典的守护线程GC
Thread.setDaemon(true)设置此线程是守护线程
12 join
join就是把指定的线程加入当前的线程
举例子: 比如join线程a 会让当前的线程b进入等待,知道线程a结束生命周期,线程b才会执行
13 synchronized?
java中的关键字,防止线程之间的干扰,如果一个对象时对多个线程可见的,那么对该对象的所有读写操作都将通过同步的方法来进行
用法;
代码块