请问这个java 的Thread程序,为啥没有出现两个线程交替运行?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了请问这个java 的Thread程序,为啥没有出现两个线程交替运行?相关的知识,希望对你有一定的参考价值。

public class ThreadDemo_2
public static void main(String[] args)

TestThread t = new TestThread();
new Thread(t).start();
for(int i=0;i<10;i++)

System.out.println("mian线程在运行!");



class TestThread implements Runnable

public void run()

for(int i=0;i<10;i++)

System.out.println("TestThread线程在运行!");



运行结果是:mian线程在运行!
mian线程在运行!
mian线程在运行!
mian线程在运行!
mian线程在运行!
mian线程在运行!
mian线程在运行!
mian线程在运行!
mian线程在运行!
mian线程在运行!
TestThread线程在运行!
TestThread线程在运行!
TestThread线程在运行!
TestThread线程在运行!
TestThread线程在运行!
TestThread线程在运行!
TestThread线程在运行!
TestThread线程在运行!
TestThread线程在运行!
TestThread线程在运行!

这是因为在一个cpu 时间片里就可以把你这10次循环给运行完。你加一个sleep 等一段时间在看。如下

public class ThreadDemo_2
public static void main(String[] args) throws InterruptedException

TestThread t = new TestThread();
new Thread(t).start();
for(int i=0;i<10;i++)

System.out.println("mian线程在运行!");
Thread.sleep(100);



class TestThread implements Runnable

public void run()

for(int i=0;i<10;i++)

System.out.println("TestThread线程在运行!");
try
Thread.sleep(100);
catch (InterruptedException e)
// TODO Auto-generated catch block
e.printStackTrace();



参考技术A 使用线程最大的问题就是不可确定性。线程运行是,谁先拿到锁,谁先运行,没有先后之分的。 参考技术B 线程运行是,谁先拿到锁,谁先运行,没有先后之分的 参考技术C 这主要是看cpu怎么去调配线程。
多cpu更能体现多线程的优势

我买了一本java web 典型模块与项目实战大全,请问里面内容为啥都没有service层呢?

据我了解一般项目都会有dao和service便于分层处理数据和业务逻辑,但为什么这本书里都没有用到呢,难道是因为项目规模不大没有必要吗?

很简单,之所以出现分层,主要是为了代码维护的方便,但是就是为了解释原理,还分几个文件存放代码,这从演示上说不过去,所以把这些统统都放到一个类中处理了,你开发的时候也要分好类,这样便于后续的维护,否则代码混在一起不便于管理。有些书中并不写server作为逻辑层,可能使用logic之类的字眼。
分层的重要原因还是业务划分的需要,一个java web程序可能有多个业务构成的,分层有利于业务划分和代码重用,毫无疑问,简单的java web程序,没那么多的业务逻辑让你去处理。
而且,实际开发过程中,任何一个软件,都比教科书上演示的要复杂的多。
参考技术A 所以说现在的书籍都很坑爹,没有实际意义。

不分层的项目建议真心不要去学习,这些书会带给你错误的引导,一旦学了这种不合理的架构,以后就很难去改正自己的思想了。

要强迫自己使用MVC,强迫自己使用设计模式,这样才能使自己得到提高。
参考技术B 书本里的不一定会分那么清楚,不过一般相应的类都是写在一个java文件里,如果你实在感觉不舒服就自己整理了分出来

以上是关于请问这个java 的Thread程序,为啥没有出现两个线程交替运行?的主要内容,如果未能解决你的问题,请参考以下文章

请问运行java.class文件出现错误 Exception in thread "main" java.lang.NoClassDefFoundError: Test2

为啥Java聊天室程序运行时显示“不能写入到指定服务器”?求大神!

我买了一本java web 典型模块与项目实战大全,请问里面内容为啥都没有service层呢?

当我在 Thread 对象上调用 run() 时,为啥我的 Java 程序会泄漏内存?

为啥出现Exception in thread "main"

请问这段C#代码为啥结果是CBA?