线程问题求教!谢谢

 1 public class SynchronizedClass1 extends Thread{
 2     private Account account;
 3     private double drawbalance;
 4     public SynchronizedClass1(String name,Account account,double drawbalance){
 5         super(name);
 6         this.account=account;
 7         this.drawbalance=drawbalance;
 8         start();
 9         
10     }
11     public void run(){
12         for(int i=0;i<20;i++){
13         try{sleep(1000);}catch(Exception e){}
14         account.draw(drawbalance);}
15     }
16     public static void main(String[] args){
17         Account a=new Account("刘腾",100000);
18         new SynchronizedClass1("A线程",a,100);
19         Thread rt=new Thread(new RunnableClass(a));
20         rt.setName("B线程");
21         rt.start();
22     }
23 }
24 //账户
25 class Account {
26     private String name;
27     private double balance;
28     public Account(){}
29     public Account(String name,double balance){
30         this.name=name;
31         this.balance=balance;
32     }
33     public void setName(String name){
34         this.name=name;
35     }
36     public void setBalance(double balance){
37         this.balance=balance;
38     }
39     public String getName(){
40         return name;
41     }
42     public double getBalance(){
43         return balance;
44     }
45     public boolean equals(Object obj){
46         if(this==obj)return true;
47         if(obj!=null)return false;
48         if(getClass()!=obj.getClass())return false;
49         Account other =(Account) obj;
50         if(other.name==name&&other.balance==balance)return true;
51         else return false;
52     }
53     public synchronized void draw(double drawbalance ){
54             if(drawbalance>getBalance()){
55                 System.out.println("余额不足!");
56             }else{
57                 System.out.println("吐钱成功!");
58                 try{
59                     Thread.sleep(1000);
60                     setBalance(getBalance()-drawbalance);
61                     System.out.println("余额为:"+getBalance());
62                 }catch(Exception e){
63                     System.out.println(e);
64                 }
65             }
66     }
67 }
68 class RunnableClass implements Runnable{
69     private Account account;
70     //private double drawbalance;
71     public RunnableClass(Account account){
72         this.account=account;    
73     }
74     public void run(){
75         for(int k=0;k<15;k++){
76         try{Thread.sleep(1000);
77         System.out.println(account.getBalance());
78         }catch(Exception e){}
79         }
80     }
81 }

问题:一个Account实例,传到两个线程中,一个线程(1)执行它的同步代码方法,另一个线程(2)执行它的普通方法。我在同步代码块中让其线程进入休眠。按理说只要进入同步代码块,这个类就被加锁了,另外一个线程不应该执行撒。为什么就在(1)休眠的状态下,(2)却执行了?求教!!!

转载于:https://www.cnblogs.com/teng-IT/p/4447352.html

浅谈SimpleDateFormat的线程安全问题 浅谈SimpleDateFormat的线程安全问题在实际项目中,我们经常需要将日期在String和Date之间做转化,此时需要使用SimpleDateFormat类。使用SimpleDateFormat类的parse方法,可以将满足格式要求的字符串转换成Date对象,使用SimpleDateFormat类的format方法,可以将Date类型的对象转换成一定格式的字符串!但是有一点需要特别注意,S... 阅读详情

相关推荐

使用Windbg分析多线程临界区死锁问题

使用Windbg分析多线程临界区死锁问题分享。

dvlinker的技术专栏 5万+

Java中的线程安全问题(如果想知道Java中有关线程安全问题的基本知识,那么只看这一篇就足够了!)

Java中的线程安全问题(如果想知道Java中有关线程安全问题的基本知识,那么只看这一篇就足够了!)

秋刀鱼不做梦的编程日常 9874

使用Windbg分析多线程死锁项目实战问题分享

本文详细讲解通过Windbg分析dump文件去排查多线程死锁的项目问题实战案例,有实战参考价值!

dvlinker的技术专栏 6万+

拜托!别再问我多线程的这些问题了

很多同学面对多线程的问题都很头大,因为自己做项目很难用到,但是但凡高薪的职位面试都会问到。。毕竟现在大厂里用的都是多线程高并发,所以这块内容不吃透肯定是不行的。 今天这篇文章,作为多线程的基础篇,先来谈谈以下问题: 为什么要用多线程?程序 vs 进程 vs 线程创建线程的 4 种方式? 为什么要用多线程 任何一项技术的出现都是为了解决现有问题。 之前的互联网大多是单机服务,体量小;而现在的更多是集群服务,同一时刻有多个用户同时访问服务器,那么会有很多线程并发访问。 比如在电商系统里,同一时刻比如整点抢购

码农田小齐 6377

【多线程】线程安全问题

本期主要讲解: 1.—段线程不安全的代码 2.线程不安全的原因 2.1随机调度 2.2修改共享数据 2.3原子性 2.4内存可见性 2.5指令重排序 3.synchronized加锁操作 3.1针对指定对象加锁 3.2针对this加锁 3.3针对类对象加锁 3.4 synchronized疑难解答 3.5 synchronized是可重入锁

程序猿教你打篮球的博客 7648

篮球比赛24秒计时器改造指南:用Multisim实现可调式倒计时系统

本文详细介绍了如何使用Multisim软件改造篮球比赛24秒计时器,实现可调式倒计时系统。从脉冲信号发生器到声光报警模块,提供了完整的电路设计方案和调试技巧,帮助开发者快速掌握数字电路设计的核心原理,提升体育电子设备开发效率。

wood5的博客 212

Java多线程之线程安全问题

本篇文章介绍的内容为Java多线程中的线程安全问题,此处的安全问题并不是指的像黑客入侵造成的安全问题,线程安全问题是指因多线程抢占式执行而导致程序出现bug的问题。

未见花闻的博客 9593

全志T133-s3(Tina Linux)下RTL8723DS WiFi驱动移植与调试实战

本文详细介绍了在全志T133-s3平台(Tina Linux)上移植RTL8723DS WiFi驱动的完整流程,包括硬件连接、驱动源码获取、内核配置、系统适配、设备树配置以及常见问题排查。通过实战案例,帮助开发者快速解决SDIO接口通信、固件加载、电源管理等关键问题,实现稳定的WiFi功能。

weixin_30505225的博客 507

windbg分析单个服务线程数很多的问题

有一天突然发现生产环境单个服务的线程数很多,如下图所示: 因此我想到了两个问题,第一:为什么同时存在这么多线程?第二:线程是怎么产生的? 一.为什么同时存在这么多线程? 1:通过windbg分析dump文件,使用命令!threadpool查看,可以看到存在大量空闲线程: 2:用命令!threads查看线程,如下图,存在大量的MTA(Threadpool worker),这样的线程就是空闲线程。 切换到任意一个线程,我选择了212这个线程,用命令!dumpstack输出堆栈信息,可以看到线程最后调用的是W

差池 1717

从报错到优化:一次Gauss JDBC参数限制排查实录(32767参数上限避坑指南)

本文详细记录了排查GaussDB JDBC驱动因绑定参数数量超过32767上限而抛出`PSQLException`(报错信息为`Tried to send an out-of-range integer as a 2-byte value`)的全过程。文章深入分析了该限制的底层协议原理,并提供了应用层分批查询、使用临时表以及优化业务逻辑等多种解决方案,旨在帮助开发者规避此参数上限陷阱,构建更稳健的数据访问层。

rgv23456789的博客 220

BART non-Cartesian 重建:并行成像 压缩感知

本文主要使用并行成像和压缩感知方法实现non-Cartesian MRI 数据的重建。

张哥频道:电生理信号和磁共振成像 1182

一个Spring事务线程安全的问题,望周知!

没想到,还会有这种问题...

3y 4389

【华为OD机试真题 2025C卷】895、贪心歌手 | 机试真题+思路参考+代码解析 (C++、Java、Py、C语言、JS)

【华为OD机试真题 2025C卷】895、贪心歌手 | 机试真题+思路参考+代码解析 (C++、Java、Py、C语言、JS) 华为od机试,华为od机试真题,华为od机试E卷,华为odE卷,华为od机试真题E卷,华为OD,华为OD机试,华为OD机试真题,华为od机考,华为od机试D卷,华为od机试真题D卷,华为od手撕代码,华为od,华为od机试C卷,华为od e卷,华为2025e卷,od机试,2025E卷,华为OD机试E卷,什么是华为od,华为od介绍,全面了解华为od,2025华为od,如何备战华

KJ.JK 965

for循环多线程执行_拜托!别再问我多线程的这些问题了

很多同学面对多线程的问题都很头大,因为自己做项目很难用到,但是但凡高薪的职位面试都会问到。。毕竟现在大厂里用的都是多线程高并发,所以这块内容不吃透肯定是不行的。今天这篇文章,作为多线程的基础篇,先来谈谈以下问题:为什么要用多线程?程序 vs 进程 vs 线程创建线程的 4 种方式?为什么要用多线程 任何一项技术的出现都是为了解决现有问题。之前的互联网大多是单机服务,体量小;而现在的更多是集群服务,...

weixin_39930748的博客 2668

[xboard-ok210] 44 s5pv210开发板介绍和对比

文章目录前言四大S3C6410提供商友坚开发板UT-S5PV210华天正(润尔)real210飞凌开发板ok210九鼎x210友善之臂开发板tiny210mini210smart210天嵌开发板tq210sate210xboardxboardxboard之ok210 前言 四大S3C6410提供商 友坚开发板 UT-S5PV210 华天正(润尔) real210 飞凌开发板 ok210 九鼎 x210 友善之臂开发板 tiny210 mini210 smart210 天嵌开发板 tq210 sate210

鹰之翔 288

8-bit量化在YOLOv11中的部署实践-(使用PTQ、QAT量化技术实现模型体积压缩和推理加速)

本文系统介绍了YOLOv11模型量化技术,主要包括三个核心部分:首先阐述模型量化的基础理论,包括量化分类、数学原理和性能影响;其次分析YOLOv11架构特点及其量化敏感层;最后详细讲解训练后量化(PTQ)的具体实现流程。研究表明,8-bit量化可使YOLOv11模型大小缩减至1/4,推理速度提升1.7-2.3倍,精度损失控制在1%以内。文章特别强调了校准算法选择(如最小最大值法和KL散度法)对量化效果的关键影响,并提供了完整的代码实现示例,为YOLOv11的高效部署提供实用指导。

本博客聚焦 YOLOv11 全流程落地,涵盖架构优化、数据集处理、训练技巧与多场景部署,兼及国产数据库、Java 开发与 AI 模型应用,内容兼顾理论与工程实践,为开发者提供系统干货,助力高效提升技术能力。 1629

面试必问!多线程并发问题

多线程并发问题,基本是面试必问的。 大部分同学应该都知道Synchronized,Lock,部分同学能说到volatile、并发包,优秀的同学则能在前面的基础上,说出Synchronized、volatile的原理,以及并发包中常用的数据结构,例如ConcurrentHashMap的原理。 这篇文章将总结多线程并发的各种处理方式,希望对大家有所帮助。 一、多线程为什么会有并发问题 为什么多线程同时访问(读写)同个变量,会有并发问题? Java 内存模型规定了所有的变量都存储在主内存中,每条线程有自己的工

大模型学习路线 4307

基于STM32L4XX 、HAL库的ATD5984步进电机驱动器驱动程序应用设计

一、简介: ATD5984是一款内部集成了译码器的微特步进电机 驱动器,能使双极步进电机以全、半、1/4、/1/8、1/16 和1/32步进模式工作。步进模式由逻辑输入管脚MSx选 择。其输出驱动能力达到28V±1.6A。 译码器是ATD5984易于使用的关键,通过STEP管脚 输入一个脉冲就可以使电机完成一次步进,省去了相序 表,高频控制线及复杂的编程接口,使其更适于没有复 杂的微处理器或微处理器负担过重的场合。 在步进操作期间,ATD5984的内部电路可以自动

PP_Cottage的博客 408

线程安全问题

线程安全问题的部分内容

xiaochuan_bsj的博客 1155

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Linux线程——线程安全、重入问题、死锁

还是那句话:线程安全关注的是线程执行的时候会不会受到影响,从而影响当前线程执行结果!而重入关注的是函数本身的特性!即是否能被多个执行流重复进入!二者之间的关系就是:可重入的函数一定是线程安全的!但是,线程安全,不一定可重入!举例说明如果函数可以被重入,也就是说不会使用一些什么临界资源,这样子,就满足了线程互斥的条件了!即多个线程进来访问仅仅只是访问自己局部存储和线程栈的相关内容!这必然是线程安全的!但是线程安全,不一定是可重入的Test();//加锁while(1){

2301_79705195的博客 1173

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

使用了synchronized,竟然还有线程安全问题!

实战中受过的伤,才能领悟的更透彻,二师兄带你分析实战案例。 线程安全问题一直是系统亘古不变的痛点。这不,最近在项目中发了一个错误使用线程同步的案例。表面上看已经使用了同步机制,一切岁月静好,但实际上线程同步却毫无作用。 关于线程安全的问题,基本上就是在挖坑与填坑之间博弈,这也是为什么面试中线程安全必不可少的原因。下面,就来给大家分析一下这个案例。 有隐患的代码 先看一个脱敏的代码实例。代码要处理的业务逻辑很简单,就是多线程访问一个单例对象的成员变量,对其进行自增处理。 SyncTest类实现了Runna.

程序新视界 916

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

.NET线程同步问题的调试方法

问题介绍 .NET中线程同步经常用到以下方式, lock statement AutoResetEvent/MannualResetEvent Mutex Semaphore ReaderWriterLock Interlocked 线程同步经常遇到的问题有以下几种, 等待 - 等待锁释放 死锁 - 请求锁资源顺序不一致而造成互锁

Web Debug 2580

太全了!多线程问题概述

多线程方面知识的全面汇总,20个问题你真的都知道吗?

zhaolk的博客 642

求教关于Ehcache的死锁问题处理

最近有个项目要使用cache,正在做Ehcache的技术试验。 现在同事向我提出一问题: Ehcache内部如何管理缓存更新? 业务场景:可能存在多个线程同时向一个cache更新数据(总量约为平均每秒3万条左右),IBM MQ我们做过试验,在代入业务逻辑的场景下,这个吞吐量可能吃不消。现在准备自己实现业务逻辑,用cache缓存数据提供给前端的Server使用。如果 2...

chenxingzi的博客 960
上一篇: 同一把锁
下一篇: 释放同步监视器的锁定(java疯狂讲义)
aixirang3421
博客等级 码龄11年 0粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值