zoukankan      html  css  js  c++  java
  • [JavaWeb基础] 022.线程安全(一)

    在我们做客户端程序的时候我们经常会碰到线程安全的问题,比较经典的例子就是模拟局域网聊天。那么线程的安全到底是怎么回事呢,我们经常会听到StringBuffer是线程安全的,StringBuilder不是线程安全的,下面我们来讲讲线程安全的重要性

    1.首先我们来看一个例子,首先是一个Count类,这里面只有一个计数功能

    /***
     * 计数类
     * @author yangqingshan
     *
     */
    public class Count {
    	// 累计结果
    	private int num;
    	public void count() {
            // 计数
    		for(int i = 1; i <= 10; i++) {
    			num += i;
    		}
    		// 打印结果
    		System.out.println("当前线程:" + Thread.currentThread().getName() + "-" + num);
    	}
    }
    

     2.然后我们需要有一个Thread类来进行进程的操作

      /***
     * 线程安全
     * 
     * @author yangqingshan
     * 
     */
    public class ThreadSafe {
    	public static void main(String[] args) {
    		Runnable runnable = new Runnable() {
    		    // 声明计数器类
                Count count = new Count();
                // 执行线程方法
    		    public void run() {
    		      count.count();
    		    }
    		};
    		// 同时启动10个线程
    		for (int i = 0; i < 10; i++) {
    		    new Thread(runnable).start();
    		}
    	}
    }
    

    3.运行结果如下

    4.2种方法解决这个问题。第一:Count类中的属性num放到count方法中声明

    /***
     * 计数类
     * @author yangqingshan
     *
     */
    public class Count {
            // 计数方法
    	public void count() {
            int num = 0 ;
            // 计数
    		for(int i = 1; i <= 10; i++) {
    			num += i;
    		}
    		// 打印结果
    		System.out.println("当前线程:" + Thread.currentThread().getName() + "-" + num);
    	}
    }
    

     5.第二种方法:修改线程类中的Count的生命在run方法内

    /***
     * 线程安全
     * 
     * @author yangqingshan
     * 
     */
    public class ThreadSafe {
    	public static void main(String[] args) {
    		Runnable runnable = new Runnable() {
                // 执行线程方法
    			public void run() {
    			    // 声明计数器类
                    Count count = new Count();
    				count.count();
    			}
    		};
    		// 同时启动10个线程
    		for (int i = 0; i < 10; i++) {
    			new Thread(runnable).start();
    		}
    	}
    }
    

     通过以上的例子,我们可以对线程安全有个初步的认识

     

    本站文章为 宝宝巴士 SD.Team 原创,转载务必在明显处注明:(作者官方网站: 宝宝巴士 

    转载自【宝宝巴士SuperDo团队】 原文链接: http://www.cnblogs.com/superdo/p/4871893.html

  • 相关阅读:
    MAC 使用git时 不自动补全
    MAC 下 安装redis 并配置 php redis 扩展
    PHP日志 LOG4PHP 的配置与使用
    PHP数组 转 对象/对象 转 数组
    将数组打印到txt文件中
    Yii2控制器 返回 json 格式数据
    控制流输出26大小写英文字母
    员工领导部门关系类
    重写父类
    递归(recursion)
  • 原文地址:https://www.cnblogs.com/superdo/p/4871893.html
Copyright © 2011-2022 走看看