线程的学习
来源:互联网 发布:河南卫视网络直播 编辑:程序博客网 时间:2024/05/16 02:46
**
概念
**
多线程:一个应用程序有多条执行路径 进程:正在执行的应用程序 线程:进程的执行单元,执行路径 单线程:一个应用程序只有一条执行路径 多线程:一个应用程序有多条执行路径 多进程的意义? 提高CPU的使用率 多线程的意义? 提高应用程序的使用率
线程的生命周期
线程同步(火车票售卖问题)
- // 定义100张票 private static int tickets = 100; // 定义同一把锁 private
Object obj = new Object(); 核心代码块synchronized (SellTicket.class) {//
if (tickets > 0) {
try {
Thread.sleep(100);//
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName() + “正在出售第” + (tickets–) + “张票”);
}
同步代码块的锁是谁呢?
任意对象同步方法的锁是谁呢?
this(关键字synchronized一般放在权限修饰符后面)静态方法及锁对象问题
静态方法的锁对象是谁呢?
类的字节码文件对象
多线程安全问题的原因(也是我们以后判断一个程序是否有线程安全问题的依据)
A:是否是多线程环境
B:是否有共享数据
C:是否有多条语句操作共享数据
思考
虽然我们可以理解同步代码块和同步方法的锁对象问题,
但是我们并没有直接看到在哪里加上了锁,在哪里释放了锁,
为了更清晰的表达如何加锁和释放锁,JDK5以后提供了一个新的锁对象
Lock:
void lock():获取锁
void unlock():释放锁
从上面的案例我们可以发现创建和启动线程很麻烦,要单独创建一个类来创建线程和单独创建一个类来启动线程。所以以后我们更多的是采用匿名内部类的方式
如果想让一个线程在经过多长时间后执行并且可以重复执行这时候就要用到定时器了 (Timer和imerTask)
运行结果:经过3秒后会输出 beng,爆了
练习: 在指定的时间删除我们的指定目录?
- java线程的学习
- java线程的学习
- Android线程的学习
- 线程的学习
- 线程的学习---1
- 线程的学习
- 线程的学习
- 线程的学习
- 一、线程的学习
- 线程的学习
- java线程的学习
- java的线程学习
- 线程的学习笔记
- java线程的学习
- java 线程的学习
- 线程池的学习
- android线程的学习
- 关于线程的学习
- GitHub 上传本地代码到仓库
- GreenDao 3.0 的使用
- RBM
- Nginx简单介绍及安装
- 集成类项目小结
- 线程的学习
- Spring Cloud 学习之旅 --- 断路器
- 配置DUBBO的管理页面
- 倒排索引(reverted index)的初步了解
- mysql 技巧二篇
- Microsoft Speech Platform 11不支持Windows 10
- VS写代码的时候,三条“/”生成注释格式失效
- 如何理解java采用Unicode编码
- Spring面试问答Top 25