Java线程之join方法&死锁&Timer

简介: 线程锁 锁定的是对象 1.放置在方法的结构上 public synchronized void test(){ 好多代码 执行代码 好多代码 } 对象.test(); 对象被某一个访问他的线程锁定 2.放置在方法(构造 块)的内部(看起来是包含着一堆代码) public void test(){ 好多代码 synchronized(对象){ 执行代码 } 好多代码 } 3.线程相关的一些方法 sleep(); run(); start(); setPriority();--------

知识回顾

1.生产消费者模型

 可能会产生多线程并发带来的安全隐患----抢夺资源

2.如何解决线程安全的问题

 synchronized  特征修饰符  同步的

线程锁    锁定的是对象

 1.放置在方法的结构上

 public synchronized void test(){

  好多代码

  执行代码

  好多代码

 }

 对象.test();   对象被某一个访问他的线程锁定

 2.放置在方法(构造 块)的内部(看起来是包含着一堆代码)

 public void test(){

  好多代码

  synchronized(对象){

   执行代码

  }

  好多代码

 }

3.线程相关的一些方法

 sleep();   run();    start();    setPriority();----------->Thread

 wait()    notify()   notifyAll()----------->Object

 注意wait方法  notify方法  使用

 对象.wait();

 对象调用wait方法  不是对象等待

 访问此对象的线程进入等待状态

4.笔试中经常考察的关于线程的问题

 程序 进程 线程概念

 如何实现线程

 线程的几种状态

 如何切换几种状态

 wait  sleep方法区别。。。

比较重要的方法    join---->Thread类

 设计一个模型

 1.有两个线程 One  Two   two加入到one里面

 2.设计模型时候  two线程在one的run里面创建    保证两个有先后顺序

 3.two.join();   无参数==0   有参数==2000

 one 启动

 two 启动

 three 启动

 two就join啦

 2000之后  one想要将two从自己的线程内剔除

 two对象不在自己的手里  对象被three线程锁定啦  10000

 one只能等待 threee将two对象释放后 才能踢掉

synchronized锁 非常的厉害

一旦对象被锁定  不释放的情况下  其他的对象都需要等待

有可能会产生一个死锁的效果

死锁的效果

   模拟一个模型  演示死锁

如何解决死锁效果

   经典的哲学家就餐问题

   解决死锁的问题

 1.礼让---->产生时间差

 2.不要产生对象公用的问题

计时器/定时器----->线程应用

java.util包

Timer类

无参数构造方法 创建对象

timer.schedule();

反射机制

注解(解析 自定义)

目录
相关文章
|
2月前
|
Java
Java语言实现字母大小写转换的方法
Java提供了多种灵活的方法来处理字符串中的字母大小写转换。根据具体需求,可以选择适合的方法来实现。在大多数情况下,使用 String类或 Character类的方法已经足够。但是,在需要更复杂的逻辑或处理非常规字符集时,可以通过字符流或手动遍历字符串来实现更精细的控制。
254 18
|
2月前
|
JSON 网络协议 安全
【Java】(10)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
192 1
|
2月前
|
Java 编译器 Go
【Java】(5)方法的概念、方法的调用、方法重载、构造方法的创建
Java方法是语句的集合,它们在一起执行一个功能。方法是解决一类问题的步骤的有序组合方法包含于类或对象中方法在程序中被创建,在其他地方被引用方法的优点使程序变得更简短而清晰。有利于程序维护。可以提高程序开发的效率。提高了代码的重用性。方法的名字的第一个单词应以小写字母作为开头,后面的单词则用大写字母开头写,不使用连接符。例如:addPerson。这种就属于驼峰写法下划线可能出现在 JUnit 测试方法名称中用以分隔名称的逻辑组件。
214 4
|
2月前
|
JSON 网络协议 安全
【Java基础】(1)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
215 1
|
2月前
|
编解码 Java 开发者
Java String类的关键方法总结
以上总结了Java `String` 类最常见和重要功能性方法。每种操作都对应着日常编程任务,并且理解每种操作如何影响及处理 `Strings` 对于任何使用 Java 的开发者来说都至关重要。
313 5
|
3月前
|
算法 安全 Java
除了类,Java中的接口和方法也可以使用泛型吗?
除了类,Java中的接口和方法也可以使用泛型吗?
154 11
|
3月前
|
Java 开发者
Java 函数式编程全解析:静态方法引用、实例方法引用、特定类型方法引用与构造器引用实战教程
本文介绍Java 8函数式编程中的四种方法引用:静态、实例、特定类型及构造器引用,通过简洁示例演示其用法,帮助开发者提升代码可读性与简洁性。
|
3月前
|
存储 Oracle Java
|
3月前
|
数据采集 存储 弹性计算
高并发Java爬虫的瓶颈分析与动态线程优化方案
高并发Java爬虫的瓶颈分析与动态线程优化方案
Java 数据库 Spring
164 0

热门文章

最新文章