day--27 Java线程

本文介绍Java中的线程概念,包括线程的创建方法、状态及其转换、调度机制等。此外,还探讨了线程间的通信机制,如等待和通知方法,并讲解了线程本地共享的概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

线程

====================================

*进程 

  在操作系统中,并行执行的任务


*线程

在进程内部并行执行的任务

*线程作用:

*)将大任务,切分为多个并行的子任务

以提高执行效率

*)阻塞的代码要并行执行.



*java 创建线程的两种方式

继承Thread

实现Runable接口 创建对象 r包含一段可以被线程执行的代码


Thread t1=new Thread(r);

//线程执行后执行的r.run();

t1.start()


*线程调度器

负责时间片的分配.

*)线程间是竞争关系


*)线程状态 

new---->(Start())runable 可执行等待状态----->进入run(running)方法可以阻塞(block).---->run方法结束线程消亡(dead)

消亡后不能重新启动该线程.


线程调度方法

=============================

yeild() 当前线程让出cpu

sleep() 当前线程暂停


getPriority()

setPriority(int newPriority)

优先级,1-10, 默认5

优先级高,获胜机会越多.

反之亦然.


isDaemon()

setDaemon(boolean b)

守护线程,后台线程,精灵线程 *前台线程或虚拟机退出自动退出


b.join 使用另一个线程b的执行结果



interruput()打断一个线程的执行 InterruptedException


多线程共享数据

====================================

*一个线程正在修改数据,另一个线程同事访问数据.

synchronized

==================================

*同步

*一个线程执行到sychromized代码块时,必须得到一个同步锁,才能执行.


*非静态的同步方法

必须获得当前对象的锁

*静态的同步方法

获得*类对象*的锁(任何类只有一个锁)


*同步代块


synchromized(对象 ,)

{

同步代码块

}


获得指定的锁

1)this code可能被同时执行

2)类对象

3)正在访问的数据对象

*synchronized 保证多线程共享数据时数据安全

线程安全 
线程不安全 线程安全

StringBuilder StringBuffer

ArrayList Vector 

HashMap HashTable
* synchronized 效率低

======================================================

*****生产者和消费者问题*******

*一种线程间的通信机制

*一个线程产生数据并放入集合另一个线程取数据


等待和通知

==================================================

Object 的方法

wait(),

当前线程在被调用的对象上等待(厨师在盘子上等待)

notify()

通知所有等待线程中的一个

notifyAll()

通知所有等待的线程

*)wait() 外面总是一个循环判断以防恶意线程敲盘子

*)等待通知方法外面必须有synchorized (测试代码在方法中没有,在调用处有.)


线程本地共享(绑定)

=====================================

*在当前线程上可以绑定一个数据,当执行到后面组件代码时,可以从当前线程获得数据


ThreadLocal

------------------------------------------------------------

Set(数据) 在当前线程绑定数据

get() 从当前线程获取数据

remove() 从当前线程移除数据










.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值