关于多线程问题,请教???

问题描述

关于多线程问题,请教???

public class TestSyncTest {
public static void main(String[] args) {
??TestSync job = new TestSync();
??Thread jia = new Thread(job);
? ?Thread yi = new Thread(job);
? ?jia.setName("甲");
??yi.setName("乙");
? ?jia.start();
??yi.start();
}
}

class TestSync implements Runnable {
?private int balance;
?public void run() {
? ?for (int i = 0; i < 30; i++) {
? ??increment();
? ??System.out.println("余额为 :" + balance + "---------"+ Thread.currentThread().getName() +"在操作");
? ?}
}
?public synchronized void increment() {
? ?int i = balance;// 余额
? ?balance = i + 1;

?}

}


为什么输出来 并不是同步的
控制台输出结果??????????????
余额为 :1---------甲在操作
余额为 :2---------乙在操作
余额为 :4---------乙在操作
余额为 :5---------乙在操作
余额为 :3---------甲在操作
余额为 :6---------乙在操作
余额为 :7---------甲在操作
余额为 :8---------乙在操作
余额为 :9---------甲在操作
余额为 :11---------甲在操作
余额为 :12---------甲在操作
余额为 :13---------甲在操作
余额为 :14---------甲在操作
余额为 :15---------甲在操作
余额为 :16---------甲在操作
余额为 :17---------甲在操作
余额为 :18---------甲在操作
余额为 :19---------甲在操作
余额为 :20---------甲在操作
余额为 :21---------甲在操作
余额为 :22---------甲在操作
余额为 :23---------甲在操作
余额为 :24---------甲在操作
余额为 :25---------甲在操作
余额为 :26---------甲在操作
余额为 :27---------甲在操作
余额为 :28---------甲在操作
余额为 :29---------甲在操作
余额为 :30---------甲在操作
余额为 :31---------甲在操作
余额为 :32---------甲在操作
余额为 :33---------甲在操作
余额为 :34---------甲在操作
余额为 :35---------甲在操作
余额为 :36---------甲在操作
余额为 :10---------乙在操作
余额为 :37---------乙在操作
余额为 :38---------乙在操作
余额为 :39---------乙在操作
余额为 :40---------乙在操作
余额为 :41---------乙在操作
余额为 :42---------乙在操作
余额为 :43---------乙在操作
余额为 :44---------乙在操作
余额为 :45---------乙在操作
余额为 :46---------乙在操作
余额为 :47---------乙在操作
余额为 :48---------乙在操作
余额为 :49---------乙在操作
余额为 :50---------乙在操作
余额为 :51---------乙在操作
余额为 :52---------乙在操作
余额为 :53---------乙在操作
余额为 :54---------乙在操作
余额为 :55---------乙在操作
余额为 :56---------乙在操作
余额为 :57---------乙在操作
余额为 :58---------乙在操作
余额为 :59---------乙在操作
余额为 :60---------乙在操作

解决方案

甲乙线程各自循环中都在抢increment方法 谁抢到都可能 而且和这个不相关 直接调的打印方法 谁都可能先执行

时间: 2024-09-13 04:51:46

关于多线程问题,请教???的相关文章

多线程问题请教下

问题描述 每间隔获取不同的数据就是指程序一点开始后就不行的循环去取POST的数据,如果有多个网站上的数据要取是不是创建多个线程?不知道以下对不对请指教privatevoidbtnStart_Click(objectsender,EventArgse){ThreadgetOrderThread1=newThread(newThreadStart(this.GetOrders1));getOrderThread1.SetApartmentState(ApartmentState.STA);getOr

多线程-请教:关于RandomAccessFile阻塞ScheduledExecutorService的问题

问题描述 请教:关于RandomAccessFile阻塞ScheduledExecutorService的问题 大家好, 我想实现 读一个正在动态增长的日志 的功能,下面第一段代码本够用了,可惜 那个日志还会不定时自动 归档(滚动,也就是 .log 变 *.log1 .log1变 *.log2 ,类推) 已经打开的 RandomAccessFile 仍然盯着最早关联的文件,无法识别关联到新生成的 *.log 所以我修改了这段代码,就是下面第二段代码 新的问题是: 程序已运行到 randomFil

java多线程问题,请教大神,多谢

问题描述 java多线程问题,请教大神,多谢 class Res{ String name; String sex;}class Input implements Runnable{ private Res r;//这句是什么意思?跟Res r = new Res();有什么区别? Input(Res r) { this.r=r; } public void run() { int x = 0; while(true) { if(x==0) { r.name=""mike"&

请教多线程操作同一个数据表时,怎么避免表死锁

问题描述 最近有一个数据采集的项目,要求可以多路并发,遇到多线程操作同一个数据表的问题,经常发生表死锁,求各位大侠帮忙,大约有20-40个进程实例化读取类,类中Receive方法接收数据并存储上代码publicclassclsTranslateObj{privatevoidReceive(){intlenReceive=0;byte[]receivedByte=newbyte[BUFFER_SIZE];//接收返回字节数组_rtnStr=string.Empty;while(_flgConnec

python-关于selenium多线程问题的请教

问题描述 关于selenium多线程问题的请教 请问,我现在用python和selenium做一个模拟登录然后自动回帖,然后现在登录上去了,可是如果用一个线程一个一个回帖又比较麻烦,请问能够用多线程然后在不同板块一起操作的吗.我看了selenium grid好像他们不能共用cookie的感觉,谢了 解决方案 开多个进程,每个进程带一个selenium

【请教各位朋友、高手、版主】java 图形界面 多线程 运行的原理和本质

问题描述 小弟水平有限,对java图形界面编程一直有比较模糊的困惑感.虽然查阅了一些资料,但是往往是对技术的平白直述,还是无法找到解决困惑的方法,所以请教各位朋友.请详细讲解一下java图形界面程序运行的原理和本质.比如在java内部,一个图形界面程序,是如何开始初始化,最好能具体到几个关键类,它们都完成什么工作.这期间多线程又是如何开展的,有哪些关键性的线程,承担哪些重要作用.要是有些对本质的深入浅出的讲解,那就更好了非常感谢,小弟请教了 解决方案 解决方案二:帮你顶下!看楼下解答......

请教:多线程问题,如何让【子线程】访问【主线程】建立的【控件】?

问题描述 A窗体建立的控件,需要用多线程,同时给各个控件加载数据.(从服务器上下载数据,由于延时问题,希望并行加载数据.)现在只线程出现错误:[线程间操作无效:从不是创建"XXXX"的线程访问它]救解决方法? 解决方案 解决方案二:你没代码,只能猜测你不是按这个文章里面的做法做的解决方案三:一般就写this.Invoke(()=>{//跨线程的代码}); 解决方案四:Dispatcher.Invoke(Sub()'DoSomethingEndSub)参见https://msdn.

多线程的问题请教

问题描述 packagecom.http;publicclasstest2{publicstaticvoidmain(String[]args)throwsInterruptedException{modem=newmode();shengs=newsheng(m);xiaox=newxiao(m);Threadt1=newThread(s);Threadt2=newThread(s);Threadt5=newThread(s);Threadt3=newThread(x);Threadt4=ne

请教大神!!C#多线程读同一个文件夹,并文件夹中文件复制出去

问题描述 先介绍我的程序实现的功能:假设现有文件夹A和文件夹B,文件夹A中又存在子文件夹A1.A2.A3,文件夹B中又存在B1.B2.B3.我定时扫描文件夹A,若A1,A2,A3中存在文件(从别处发过来的),则将他们自动对应的摆渡到文件夹B1,B2,B3.分割线现在存在一个问题,如果A从别处发了一个很大的文件到A1文件夹,需要发很长时间,那么我的程序扫描到A1文件夹中有文件,但还在继续往里面写入,就会等待文件写完,再将其摆渡至B1,此时,若A2中也有文件,则会等待A1中的文件摆渡完了才会去执行摆