系统编程 - 多线程编程
多任务:
多任务多用户操作
Unix操作:
多任务多用户操作
现代操作系统的
注意: 在多核CPU诞生之前(单核CPU下),所有的多任务本质都是一种伪多任务。
多核CPU下,就可以实现真正意义上的多任务!!
并发:多个任务抢占少量资源
并行:
时间片:每一个任务每次在CPU中占有的时间
优先级别调度:
注意:操作底层的多任务使用的就是时间片轮换机制,配合优先级别调度完成。
多任务:
多进程编程
多线程编程
协程编程
进程:process
操作系统的基本单位
直接申请独立的内存
线程:thread
依赖于进程
协程:coroutine
总结作业:
多线程编程:
java自身提供了四种创建多线程的方案:
1、继承Thread
2、实现Runable接口
3、实现Callable接口
4、线程池实现多线程
继承Thread
实现Runable接口
内容回顾:
1、IDE工具使用 eclipse Intellij IDEA
2、多任务
3、java实现多线程
继承Thread
实现Runnable接口
实现Callable接口:
线程对象的一些常见方法:
getName
getId
getPriority
getState
interrupt
stop
isAlive
join
Thread静态方法:
继承Thread和实现Runable有区别:
继承Thread的线程对象之间不能共享数据
实现Runable线程对象,如果使用不同的Thread对象启动同一个Runable线程对象,则会共享内存数据,
这种现象,可能会出现线程安全问题。
线程安全问题:
如何解决线程安全问题:
通过加锁解决
synchronized关键字
java提供了同步锁,synchronized,该锁有三种使用方式
1、同步块
2、将方法加锁
3、将静态方法加锁
该锁必须使用一个对象作为钥匙!!!