线程的调度和创建

进程—— 应用程序的执行实例
线程—— 进程中执行运算的最小单位

多线程——一个进程中使用多个线程来完成不同的工作,多线程是 交替占用内存资源的,而 并非是并行执行

内存将运行空间划分为 若干份时间片,每个线程可占用其中一段时间片来运行程序,每次运行的线程是不确定的,根据线程的优先级和其他因素决定

多线程的好处:
1, 充分利用CPU资源
2, 简化编程模式
3, 良好的用户体验

主线程:
main()方法是主线程的入口
产生其它子线程的线程
必须 最后完成执行,因为它执行各种关闭动作

创建多线程编程
java.lang.Thread
使用Thread类创建一个线程
构造方法:
Thread()
Thread(Runnable run)
Thread(Runnable run ,String name)//使用这个可以为为线程命名

线程优先级
MAX-PRIORITY
MIN-PRIORITY
NORM-PRIORITY

获取Thread对象://可以用来获取主线程对象
Thread t = Thread.currentThread()//这是一个静态方法,可以返回一个Thread对象
获取线程名字:
t.getName();//返回字符串
设置线程名字:
t.setName(String name);

创建一个线程的方法:
1, 继承Thread的方式创建一个线程
定义一个MyThread类来继承Thread;
重写run()方法,在方法里面编辑线程执行体;
实例MyThread对象,用对象调用start()方法启动线程;
注意:Thread的run方法其实是继承了Runnable接口里面的抽象方法run();
注意:直接调用run()的后果,只有主线程一条执行路径,并且每次调用的run()方法执行完毕以后才会执行下一个run方法,不是并行执行

线程每次执行时长是由CPU分配的时间片长度来决定的!

2, 使用Runnable接口创建线程
定义一个MyRunnable实现Runnable接口;
实现run()方法,在方法体里面编辑线程执行体;
实例化MyRunnable对象,调用start()启动线程

两种方法的区别:
使用直接继承Thread 的方式,编写简单,可直接操作线程,适用于单继承
实现接口Runnable的方式,避免单继承局限性,可拓展功能,便于资源共享
注意:比较推荐使用实现Runnable的方式来来创建线程

线程运行的几种状态:
1,创建状态:创建一个线程对象
2,就绪状态:调用该对象的start方法,等待获取CPU资源
3,运行状态:获取到CPU资源,开始运行,运行完毕,可能释放资源,在转入就绪状态
4,阻塞状态:等待用户输入,获取进入休眠时间段

5,死亡状态:线程自然运行结束,或由于外界强制结束

创建线程的方法:

(1)

public class MyThread extends Thread{}

public class Test {
public static void main(String[] args){
MyThread t = new MyThread();
t.start();
MyThread t1 = new MyThread();
t1.start();
}

}

(2)

public class MyRunnable implements Runnable{}

public class Test {
public static void main(String[] args) {
//创建线程对象
MyRunnable runnable = new MyRunnable();
//使用Runnable接口的实现类对象来作为参数,创建线程对象
Thread t= new Thread(runnable);
t.start();
Thread t1 = new Thread(runnable);
t1.start();
}
}

线程的调度方法:

(1)获取线程名字

t.getName());

t.getName());

(2)获取优先级等级,返回值为int

t.setPriority(1);
t1.setPriority(10);

(3)使子线程睡眠

Thread.sleep(500);

(4)让当前线程执行完毕再执行下一个线程jion方法

t.join();//等待此线程死亡

(5)礼让方法

Thread.yield();


猜你喜欢

转载自blog.csdn.net/jinqianwang/article/details/80203981