Java多线程问题:为什么每次执行的结果都不一样

如题所述

java中的多线程是抢占式,谁抢到了cpu,cpu才会给他分配时间片,所以每次执行结果不一样
温馨提示:内容为网友见解,仅供参考
第1个回答  2018-01-29
多线程,执行的顺序是不一样的,肯定结果不一样
第2个回答  2018-01-29
有可能发生线程安全问题

同一个java源代码编译执行后运行的结果不一样,只是什么原因?
要看下你的代码是什么了,如果是概率性或者有规律的生成的结果,如果每次的结果一样才奇怪。如果是一般的代码,那就有问题了。关键还是要看下你的代码。

java多线程的问题为何输出结果只有一个?
1、主要是tt.join的问题。2、当子线程开启后,主线程和子线程是并发或并行执行的,会多线程输出。但是tt.join是指将tt线程与主线程(即tt.join这段代码所运行时候的线程)合并,即等tt.join运行完后执行刚刚的主线程。而你的tt线程中的run()方法为:while(true)所以tt.join之后,tt一直在运行,故...

JAVA多线程,怎么总是输出两个同样的?
一样(10)。我觉得应该是临时阻塞问题。 希望能够采纳.

java中如果不加同步锁,多个线程对同一个变量修改,为什么会出现混乱
因为线程的完成时间问题,有可能线程A先完成,将变量S赋值为s了,然后线程B再完成,将S赋值为s1,那么S的值就为s1;但是,有可能线程B先完成,将S赋值为s1,然后线程A再完成,给S赋值s,那么S的值就是s了。

java多线程并发的问题
这时候由于CPU来决定运行哪个线程。所以虽然noet1是先开启的,但在执行noet1时,CPU可能又去跑去执行main线程了,然后就会开启onet2.还有我觉得主线程结束了,只不过其他两个线程仍在继续运行。所以会打印出结果。楼主如果还有什么不明白的话可以继续问或者相互讨论。

java+多线程异步堆栈实验中可能出现的问题?
线程安全问题:由于多线程同时操作共享的数据结构,可能会导致数据竞争和不一致的结果。需要使用同步机制(如锁、信号量、原子变量等)来保证线程安全。2. 死锁问题:如果多个线程相互等待对方释放锁,就会形成死锁。需要避免出现这种情况,可以使用避免死锁的算法或者设计合理的锁竞争策略。3. 内存泄漏问题:...

关于java多线程的疑问,为何单步没问题的程序去除断点后运行就会有问题...
用测试类跑的吧?测试类的主线程结束之后,容器就直接关掉了,你开的那些线程已经没有运行环境了,所以你让主线程等下在结束,容器保持开启状态,其他线程才能执行完;这个问题在程序正常启动的时候是不存在的。

帮帮忙!java中多线程运行累加和程序问题
每个线程不可能执行30000次i++,因为另外一个现成的i++也会改变i的值。关键一点是,循环变量在各个线程中都是相同的,是同一个i,所以总循环次数是大致一样的。之所以说大致一样,是因为在i++执行过程中线程调度的几率很小。如果恰好在这个时候调度,那么循环次数就不会是30000 ...

如何解决java 多线程问题
Java线程同步的优先级代表该线程的重要程度,当有多个线程同时处于可执行状态并等待获得 CPU 时间时,线程调度系统根据各个线程的优先级来决定给谁分配 CPU 时间,优先级高的线程有更大的机会获得 CPU 时间,优先级低的线程也不是没有机会,只是机会要小一些罢了。 你可以调用 Thread 类的方法 getPriority...

Java中多线程在多核CPU中是真的同时执行吗?
如果是单核CPU,在某个时间点只能执行一个线程,但是多核CPU你可以理解为多个单核CPU,当然可以同时执行多个线程啦。

相似回答