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

问题描述

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

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线程正在运行!
....

解决方案

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

解决方案二:

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

时间: 2024-08-23 11:25:46

java-简单多线程运行结果不正确的相关文章

java socket 多线程-请问下面这个程序,在不改变功能的前提下,可以改装成多线程运行吗?*请贴上代码,谢谢*

问题描述 请问下面这个程序,在不改变功能的前提下,可以改装成多线程运行吗?*请贴上代码,谢谢* import java.net.*; // for Socket, ServerSocket, and InetAddress import java.io.*; // for IOException and Input/OutputStream public class Server { private static final int BUFSIZE = 32; // Size of receiv

Java 并发/多线程教程(十一)-JAVA内存模型

本系列译自jakob jenkov的Java并发多线程教程,个人觉得很有收获.由于个人水平有限,不对之处还望矫正!         Java内存模型指定Java虚拟机如何与计算机的内存(RAM)一起工作.Java虚拟机是整个计算机的一个模型,所以这个模型自然包含了一个内存模型--也就是Java内存模型.         如果您想要设计正确的并发程序,那么理解Java内存模型是非常重要的.Java内存模型指定了不同线程如何以及何时可以看到由其他线程写入共享变量的值,以及在必要时如何同步访问共享变量

Java 并发/多线程教程(四)-并发模型

       本系列译自jakob jenkov的Java并发多线程教程(本章节部分内容参考http://ifeve.com/并发编程模型),个人觉得很有收获.由于个人水平有限,不对之处还望矫正!        并发系统可以有多种并发模型来实现,并发模型指定线程如何协同完成分配给他们的任务.不同的并发模型以不同的方式划分任务,并且线程与线程之间以不同的方式进行通信和协作. 并发模型与分布式系统的相似性          本文中描述的并发模型类似于分布式系统中使用的不同体系结构.在并发系统中,不同

Java的多线程

在计算机编程中,一个基本的概念就是同时对多个任务加以控制.许多程序设计问题都要求程序能够停下手头的工作,改为处理其他一些问题,再返回主进程.可以通过多种途径达到这个目的.最开始的时候,那些拥有机器低级知识的程序员编写一些"中断服务例程",主进程的暂停是通过硬件级的中断实现的.尽管这是一种有用的方法,但编出的程序很难移植,由此造成了另一类的代价高昂问题. 有些时候,中断对那些实时性很强的任务来说是很有必要的.但还存在其他许多问题,它们只要求将问题划分进入独立运行的程序片断中,使整个程序能

用Java实现多线程服务器程序

---- 摘要:在Java出现之前,编写多线程程序是一件烦琐且伴随许多不安全因素的事情.利用Java,编写安全高效的多线程程序变得简单,而且利用多线程和Java的网络包我们可以方便的实现多线程服务器程序. ---- Java是伴随Internet的大潮产生的,对网络及多线程具有内在的支持,具有网络时代编程语言的一切特点.从Java的当前应用看,Java主要用于在Internet或局域网上的网络编程,而且将Java作为主流的网络编程语言的趋势愈来愈明显.实际工作中,我们除了使用商品化的服务器软件外

Java开发多线程同步技巧

在编写一个类时,如果该类中的代码可能运行于多线程环境下,那么就要考虑同步的问题.在Java中内置了语言级的同步原语--synchronized,这也大大简化了Java中多线程同步的使用. 我们首先编写一个非常简单的多线程的程序,是模拟银行中的多个线程同时对同一个储蓄账户进行存款.取款操作的. 在程序中我们使用了一个简化版本的Account类,代表了一个银行账户的信息.在主程序中我们首先生成了1000个线程,然后启动它们,每一个线程都对John的账户进行存100元,然后马上又取出100元.这样,对

JAVA的多线程浅析

一 JAVA 语言的来源.及特点 在这个高速信息的时代,商家们纷纷把信息.产品做到Internet国际互连网页上.再这些不寻常网页的背后,要属功能齐全.安全可靠的编程语言,Java是当之无愧的.Java是由Sun Microsystem开发的一种功能强大的新型程序设计语言.是与平台无关的编程语言.它是一种简单的.面象对象的.分布式的.解释的.键壮的.安全的.结构的中立的.可移植的.性能很优异的.多线程的.动态的.语言. Java自问世以后,以其编程简单.代码高效.可移植性强,很快受到了广大计算机

Java 并发/多线程教程(五)-相同线程

       本系列译自jakob jenkov的Java并发多线程教程,个人觉得很有收获.由于个人水平有限,不对之处还望矫正!        相同线程是一并发框架模型,是一个单线程系统向外扩展成多个单线程的系统.这样的结果就是多个单线程并行运行. 为什么是单线程系统?         你也许会感到好奇,为什么当今还有人设计单线程系统.单线程系统之所以这么普及,是因为单线程系统相对于多线程并发系统更为简单.单线程系统不需要与其他线程共享任何数据.这就使得单线程系统可以使用非并发的数据结构,可以更

Java Thread多线程全面解析_java

多线程是java中很重要的知识点,在此小编给大家总结Java Thread多线程,非常有用,希望大家可以掌握哦. 一.线程的生命周期及五种基本状态 关于Java中线程的生命周期,首先看一下下面这张较为经典的图: 上图中基本上囊括了Java中多线程各重要知识点.掌握了上图中的各知识点,Java中的多线程也就基本上掌握了.主要包括: Java线程具有五种基本状态 新建状态(New):当线程对象对创建后,即进入了新建状态,如:Thread t = new MyThread(); 就绪状态(Runnab