① java多线程并发的问题
回答这个问题需要先弄清楚线程的概念和线程的生命周期。
线程:是指程序代码的一次执行,是动态的过程。楼主在定义OneTh这个实现Runnable接口类的时候肯定复写了他的run()方法。onet1和onet2是两个线程,也就是说虽然他们的run()方法相同,但是是执行了两次的。
计算机中CPU的调度过程:现在的电脑看上去能同时实现多任务,像是一边上QQ,一边听音乐,还可以一边上网。但计算机中的CPU只有一个,它没有分身术,不可能真正意义上实现同时运行这么多程序。而是采用了一种时间片轮转的方式,为每个应用程序赋予极短的时间,然后高速的在不同的程序间切换,至于每次切换到那个程序,这个要由CPU和线程的优先级来决定。
线程的生命周期:创建时是初始化了这个线程,调用start方法时,是让这个线程进入了可运行状态,注意是可运行,不是正在运行。就像上面说的,在某一时刻CPU具体要运行谁是由CPU和线程的优先级决定的。当线程被CPU运行时,就会开始执行run方法,但可能执行到一半时,CPU又被其他可运行线程抢走,而只能暂停执行。
JAVA程序线程的运行:在我们使用java命令来运行程序时,这时候已经开始了两个线程,一个是main()方法的线程,一个是垃圾回收的线程。当楼主调用start方法开启另外两个线程时。这时候由于CPU来决定运行哪个线程。所以虽然noet1是先开启的,但在执行noet1时,CPU可能又去跑去执行main线程了,然后就会开启onet2.
还有我觉得主线程结束了,只不过其他两个线程仍在继续运行。所以会打印出结果。
楼主如果还有什么不明白的话可以继续问或者相互讨论。
② java多线程有什么好处 java多线程会出现哪些问题
Java多线程的好处:
Java多线程可能出现的问题:
综上所述,Java多线程在带来诸多好处的同时,也伴随着一系列潜在的问题。因此,在进行多线程编程时,需要谨慎设计同步机制、合理控制线程数量、避免死锁等问题,以确保程序的正确性和性能。