码迷,mamicode.com
首页 > 编程语言 > 详细

Java当中的线程(三)

时间:2014-05-23 04:27:08      阅读:236      评论:0      收藏:0      [点我收藏+]

标签:des   style   class   blog   c   code   

1. 多线程的数据安全

2. 同步线程的方法

 

1. 多线程的数据安全

bubuko.com,布布扣
 1 class MyThread implements Runnable{
 2     int i = 100;
 3     public void run(){
 4         while(true){
 5             System.out.println(Thread.currentThread().getName()+i);
 6             i--;
 7             Thread.yield();  
 8             if(i<0){
 9                 break;
10             }
11         }
12     }
13 }
bubuko.com,布布扣
bubuko.com,布布扣
 1 class Test{
 2     public static void main(String args []){
 3         MyThread myThread = new MyThread();
 4         //生成两个Thread对象,但这两个Thread对象共用同一个线程体
 5         Thread t1 = new Thread(myThread);
 6         Thread t2 = new Thread(myThread);
 7     
 8         //每个线程都可以设置名字 或 获取名字
 9         t1.setName("线程a");
10         t2.setName("线程b");
11     
12         t1.start();
13         t2.start();
14     }
15 }
bubuko.com,布布扣

     代码看似结果会是  线程a100-->线程b99-->线程a98-->线程b97-->...

     但也会有可能数据安全问题

         bubuko.com,布布扣

          产生线程a100--->线程b100--->线程b98  的可能的原因是:

          线程a100 : System.out.println(Thread.currentThread().getName()+i);

                     还没到 i-- , 线程b就开始执行了

          线程b100: System.out.println(Thread.currentThread().getName()+i);

          线程a : i-- 

          线程b:  i--

          线程b98 :System.out.println(Thread.currentThread().getName()+i);

     因此 多线程共用同一份数据时, 有可能产生数据安全问题

 

2. 同步线程的方法

      解决上述问题, 同步线程

bubuko.com,布布扣
 1 class MyThread implements Runnable{
 2     int i = 100;
 3     public void run(){
 4         while(true){
 5             synchronized(this){  //同步锁, 线程会一直执行到线程锁里面的代码执行完毕
 6                 System.out.println(Thread.currentThread().getName()+i);
 7                 i--;
 8                 Thread.yield();  
 9                 if(i<0){
10                     break;
11                 }
12             }
13         }
14     }
15 }
bubuko.com,布布扣

 

     

Java当中的线程(三),布布扣,bubuko.com

Java当中的线程(三)

标签:des   style   class   blog   c   code   

原文地址:http://www.cnblogs.com/iMirror/p/3742277.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!