一、什么是线程,什么是进程
1.进程是一个应用程序,资源分配的基本单位
2.线程是一个进程中的执行场景/执行单元;一个进程可以启动多个线程,是程序执行的基本单位
二、对于java程序来说,当在DOS窗口输入命令后,会先启动jvm,而jvm就是一个进程,同时再启动一个垃圾回收线程负责回收,至少再目前的java程序中,至少有两个线程并发,一个是垃圾回收线程,一个是执行main方法的主线程
三、进程A和进程B的内存独立不共享
四、线程A和线程B,堆内存和方法区内存共享,但是栈内存独立,一个线程一个栈。假设有十个线程,会有10个栈空间,每个栈都是独立的互不干扰,各自执行各自的,这就是多线程并发。java中的多线程机制目的就是为了提高程序的处理效率
五、执行一个线程就是执行该线程的run()方法中的代码
二、创建线程的两种方式
//定义线程类
Public class Mythread extends Thread{
Public void run(){
}
}
//创建线程对象
MyThread t = new MyThread();
//启动线程
t.start();
//定义一个可运行的类
Public class MyRunnable implements Runnable{
Public void run(){
}
}
//创建线程对象
Thread thread = new Thread(new MyRunnable())
//启动线程
Thread.start();
三、关于线程调度
1.常见的调度模型
(1)抢占式调度模型
那个线程的优先等级高,抢到的CPU时间片的概率就高一些
java采用抢占式调度模型
(2)均分式调度模型
平均分配CPU时间片,,每个线程占有的CPU时间片长度一样
二、java中提供了哪些方法关于线程调度
int getPriority()
获取线程的优先级。
void setPriority(int newPriority)
设置此线程的优先级。
最低优先级1,默认优先级是5,最高优先级是10
static void yield()
对调度程序的一个暗示,即当前线程愿意产生当前使用的处理器。
此方法的执行会让当前线程从"运行状态"回到"就绪状态"
void join()
合并线程。