10.20-多线程
线程调度
创建线程的两种方式
例子-继承Thread类创建
package day10_20;
public class ThreadDemo01 {
/**
* 创建线程的第一种方式:继承Thread类
* 弊端:线程和线程要干的事情(任务)耦合到了一起
* 使用多线程时,不应当考虑执行先后顺序问题
* 执行没有先后顺序的,叫异步运行(并发运行)
* 执行有先后顺序的,叫同步运行
* @param args
*/
public static void main(String[] args) {
//创建线程对象
Thread t1 = new Person1();
Thread t2 = new Person2();
/*
* 启动线程调用的是start()方法,而并不是run()方法
*/
t1.start();
t2.start();
/*
* t1与t2的执行没有任何的先后顺序,
* 线程调度在给线程分配时间片段后,
* 并没有将某个线程一次性执行完毕。
* 并且分配的时间片段长短也不是一定均匀
*/
}
}
/*
* 该类继承Thread线程类,Thread类的子类就可以作为线程类来使用
* 该类的每一个实例都是一个可以并发的线程
*/
class Person1 extends Thread{
@Override
public void run() {
for(int i=0;i<1000;i++) {
System.out.println("Who are you");
}
}
}
class Person2 extends Thread{
@Override
public void run() {
for(int i=0;i<1000;i++) {
System.out.println("开门,社区查水表");
}
}
}例子-实现Runnable接口创建
使用线程的注意事项
线程的阻塞
例子-sleep阻塞线程
线程的停止
例子-主动中断
进程的停止
例子-线程守护
优先级
例子-优先级设置
线程安全
synchronized块
语法
线程的协同工作
线程池
总结
创建线程的方式
线程的状态
程序、进程、线程三者之间的关系
线程的状态管理
线程常用的属性与方法
最后更新于