zoukankan      html  css  js  c++  java
  • 线程中全局变量和成员变量

    在线程中,run方法中调用的变量不同,那么程序运行的结果也不同,变量属于成员变量还是属于局部变量,要处理对象的变量还是方法中的变量会导致结果的差异性。


    1)线程处理了全局变量

    package com.medivh.thread;
    
    public class ThreadTest3
    {
    		public static void main(String[] args)
    		{
    			Runnable f = new First();
    			
    			Thread t = new Thread(f);
    			
    			Thread t1 = new Thread(f);
    			
    			t.start();
    			
    			t1.start();
    		}
    }
    class First implements Runnable
    {
    	int i;
    	
    	public void run()
    	{
    		    int i=0;
    		    
    			while (true)
    			{
    				System.out.println("First"+   this.i++);
    				try
    				{
    					Thread.sleep((long) Math.random()*1000);
    				} 
    				catch (InterruptedException e)
    				{
    					e.printStackTrace();
    				}
    				if(10==this.i)
    				{
    					break;
    				}
    			}
    			
    			
    	}
    	
    }
    测试结果:

    First0
    First1
    First2
    First3
    First4
    First5
    First6
    First7
    First8
    First9
    至始至终只有一个First对象,而方法中调用的是this.i 那么就是全部变量,所以当全局变量i==10时,run方法结束。

    2)线程调用局部变量

    package com.medivh.thread;
    
    public class ThreadTest3
    {
    		public static void main(String[] args)
    		{
    			Runnable f = new First();
    			
    			Thread t = new Thread(f);
    			
    			Thread t1 = new Thread(f);
    			
    			t.start();
    			
    			t1.start();
    		}
    }
    class First implements Runnable
    {
    	int i;
    	
    	public void run()
    	{
    		    int i=0;
    		    
    			while (true)
    			{
    				System.out.println("First"+   i++);
    				try
    				{
    					Thread.sleep((long) Math.random()*1000);
    				} 
    				catch (InterruptedException e)
    				{
    					e.printStackTrace();
    				}
    				if(10==i)
    				{
    					break;
    				}
    			}
    	}
    }

    测试结果:

    First0
    First1
    First2
    First3
    First4
    First5
    First6
    First7
    First8
    First9
    First0
    First1
    First2
    First3
    First4
    First5
    First6
    First7
    First8
    First9


    run方法中调用的this.i的全局变量,而只调用的方法中的变量,而方法执行了两次,所以结果有20条。


  • 相关阅读:
    结对编程2
    结对编程总结:简单的四则运算生成程序
    我的结对项目心得与代码规范
    一个团队和他们的调查表-----("调查表与调查结果分析"心得体会)
    目标?我定好了!(我的软件工程课目标)
    Jmeter响应数据为乱码的处理
    软件工程课程建议
    结对编程之Fault、Error、Failure
    我的结对项目编程感想
    调查问卷后的心得
  • 原文地址:https://www.cnblogs.com/MedivhQ/p/4074964.html
Copyright © 2011-2022 走看看