线程学习

多线程学习:
1.什么是进程,什么是线程
进程是一个应用程序
线程是一个进程的执行场景/执行单元
一个进程可以启动多个线程
2.对于java程序来说,在DOS命令窗口输入java HelloWorld之后:
先启动JVM,JVM就是一个进程,JVM再启动主线程调用main方法,同时启动一个垃圾回收线程负责看护,回收垃圾。最起码,现在的java程序中有两个线程并发
3.进程和线程的关系
进程可以看成公司
线程是公司的员工
进程A和B的内存独立不共享
线程A与线程B:
在java语言中:
线程A与线程B,堆方法区内存共享
但是栈内存独立,一个线程一个栈
4.单核计算机并不能做到真正的线程并发
切换线程非常快,给人类的感觉就是并发的
5.实现线程并发的两种方法
5.1:
第一种方法
类接触Runnable方法,然后重写run方法
在main方法创建Thread对象,传入类的对象,将其封装成Thread对象,再调用start方法
5.2:
第二种方法:
类继承Thread类,重写run方法,再main方法中创建类的对象,调用start方法

 

6.Thread的一部分基础方法
中断线程推荐使用设置blod值的方法,可以保存数据
7.线程调度:
抢占式调度模型:
优先级高的抢占的时间片多,java使用这种
最低优先级:1
默认优先级:5
最高优先级:10
均分式调度模型:
平均分配,每个线程的时间片一样长
java提供的线程调度方法:
实例方法:
void setPriority(int newPriority) 设置线程的优先级
int getPriority() 
获取线程优先级
静态方法:
static void yield() 让位方法:暂停当前正在执行的线程对象,并执行其他线程
yield()不是阻塞方法,执行此方法只会让线程从运行态变为就绪态
8.多线程并发的环境下数据的安全
8.1 存在安全问题的条件
多线程并发,有共享数据,关系数据存在修改的行为
8.2 解决
线程排队执行,不能并发,这种机制叫线程同步机制
会牺牲一部分效率
异步编程模型:多线程并发
同步编程模型:线程同步
9.守护线程
守护线程当所有用户线程结束时自动结束,比如立即回收线程
10.计时器
Timer timer=new Timer()
是创建一个计时器对象,传入参数ture表示是守护线程计时器
11.第三种实现线程的方式
实现Callable接口
里面的call方法相当于run方法
可以获取线程返回值
12.wait与notify
wait:使对象上的线程进入无限期等待,并且立即放弃抓住的锁
notify:唤醒正在对象上等待的线程
niotifyall:唤醒对象上等待的所有线程
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值