Java 线程以及sychronizd同步

1.使用情况:在多线程的情况下需要用到,比如public static变量,某一时刻只能一个线程进行操作并改变它的值,要用这个关键字来约束。来保证线程安全
2.简介:

 
并发的基础知识
什么是线程?
线程有时称为 轻量级进程。与进程一样,它们拥有通过程序运行的独立的并发路径,并且每个线程都有自己的程序计数器,称为堆栈和本地变量。然而,线程存在于进程中,它们与同一进程内的其他线程共享内存、文件句柄以及每进程状态。
线程有哪些功能?
使用线程的理由包括:
更易响应的用户界面。
使用多处理器。 
简化建模。

	异步或后台处理。 服务器应用程序可以同时服务于许多远程客户机。如果应用程序从 socket 中读取数据,并且没有数据可以读取,那么对 read() 的调用将被阻塞,直到有数据可读。在单线程应用程序中,这意味着当某一个线程被阻塞时,不仅处理相应请求要延迟,而且处理所有请求也将延迟。然而,如果每个 socket 都有自己的 IO 线程,那么当一个线程被阻塞时,对其他并发请求行为没有影响。


每个 Java 程序都使用线程
每个 Java 程序都至少有一个线程 ― 主线程。当一个 Java 程序启动时,JVM 会创建主线程,并在该线程中调用程序的 main() 方法。
 
结束进程:
1、run方法正常返回
2、run方法中断结束
3、thread线程调用destory方法

中断线程:

if(!athread.isInterrupted()){   //thread线程非中断状态时,中断线程
at.interrupted();
}

防止并发修改异常方法:

1.加锁

2.读写分离技术 ,可采用CopyOnWriteArrayList处理 

  CopyOnWriteArrayList处理写操作是将原数据copy到一个新对象数组,在新数组上进行写,写完后将原来的引用指向当前对象数组

  处理读操作是直接在当前对象上读,达到读写分离,因为写操作会造成大面积copy数组,性能低,所以CopyOnWriteArrayList适合读远远多于写的场景,比如缓存,事务监听器等



                
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值