2 qq 19908465 qq_19908465 于 2014.10.01 10:20 提问

简单多线程运行结果不正确

class TestThread1 extends Thread
{
public void run()
{
for(int i=0;i<10;i++)
{
System.out.println("程序正在运行!");
}
}
}
public class TestThread_1
{
public static void main(String[] args)
{
new TestThread1().start();
for(int i=0;i<10;i++)
{
System.out.println("main线程正在运行!");
}
}
}
为什么不能达到线程运行的结果?

运行结果是:
程序正在运行!
程序正在运行!
程序正在运行!
........
main线程正在运行!
main线程正在运行!
main线程正在运行!
main线程正在运行!
....

2个回答

neverbe2
neverbe2   2014.10.01 13:13

这个试了几遍的确有点乱。不过,如果把变量i声明成为类的变量行了。
具体原理还没弄明白,楼主弄明白@一下我,谢谢

tianyutaizi
tianyutaizi   2014.10.16 19:51

要达到你预期的效果先要把main线程阻塞,等子线程run完之后在唤醒main线程

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
多线程编程实验
/*thread.c*/ #include #include #include #define THREAD_NUMBER 3 /*线程数*/ #define REPEAY_NUMBER 5 /*每个线程中的小任务*/ #define DELAY_TIME_LEVELS 10.0 /*小任务之间的最大时间间隔*/ void *thrd_func(void *arg) {/*线程函
java多线程学习必备_快速理解java多线程(附代码和运行结果截图和解释文档)
java多线程学习必备_快速理解java多线程(附代码、运行结果截图、解释文档)
JAVA实现的简单多线程
线程是一个程序的顺序控制流,从执行流的角度来说,线程是动态的。 进程是一个静态的概念,比如计算机中的一个. exe文件是一个进程。 一个线程中是顺序执行的,同一线程共享代码和数据空间,每个线程有自己独享的运行栈和程序计数器。 一个进程可能会包括好几个线程,每个进程有自己独立的代码和数据空间。 线程之间的切换开销较小。 进程之间的切换开销较大。 多线程为一个程序中
实现简单的队和栈结构,附代码,图
数据结构相信大家都不陌生,经过了多操作多类别的链表,下来是比较简单的栈和队列,栈(FILO),队列(FIFO). 1.栈结构.栈呢,类似于顺序表,可以将你的数据压栈,相当于压在你所创的顺序表的[0]下标处,_top指向你最后一个元素的下一位置。说白了就是对一个动态数组进行操作,_top和定义的_capacity,还有增容函数比较重要,掌握这些就可以编写简单的栈啦。数据入栈,你的_top就得向上走一
java多线程小例子:模拟两个窗口售票
总共有100张票,模拟两个窗口来买票 package defaultpacage; import java.util.Random; public class TicketSeller extends Thread { public  static  Integer total=100; public  static Integer getTotal() { ret
多线程 -- 初学简单例子
多线程初学 该模式是生产者--消费者模式。规定了两个任务内部类,Consumer 和Producer .Producer负责给 num 加1,Consumer 负责给num 减 1。run()方法只是负责任务,不负责启动。通过 new Thread(new Producer()) 将任务分配给线程。通过start()方法开启线程。Main 线程中有 线程Consumer 的实例consume
线程静态字段(ThreadStatic) 延迟初始化
https://msdn.microsoft.com/zh-cn/library/dd997286(v=vs.110).aspx
最简单的多线程实例
using System; using System.Threading; public class TestMain { //定义一个委托,用于快递哥通知老板 public delegate void tz(Boy b); //老板,发起任务 public static void Main() { //3个快递 Boy[...
java简单抽奖程序
数据库设计: [code="java"] /* SQLyog Ultimate v11.11 (32 bit) MySQL - 5.6.17 : Database - test ********************************************************************* */ /*!40101 SET NAMES utf8
一个简单的java多线程例子
现在有这样一个任务,有一份手机号列表(20W),有一份话单的列表(10W),要统计哪些手机号没有出现在话单中,哪些手机号在话单中出现了不止一次。 想到的最直接的方式,就是两层循环去遍历,虽然此方法比较笨,但目前还没有想出更好的办法。 一开始使用单线程来处理,代码是随手写的并没有进行重构,只是做一个简单的说明: package tool; import java.util.List; pu