多线程带来的数据不一致

解决:两种方法
1同步快

import java.util.Random;

public class Test13 {

    /**
     * @param args
     * 多线程带来的数据不一致
     * 解决办法  同步机制   1 同步块    2 同步方法(不推荐)
     */
    public static void main(String[] args) {
        ShellTickOp sto=new ShellTickOp(30);
        Thread counter1=new Thread(sto,"张三 ");
        Thread counter2=new Thread(sto,"李四");
        Thread counter3=new Thread(sto,"王五");
        counter1.start();
        counter2.start();
        counter3.start();

    }

}

class ShellTickOp implements Runnable{
    int tickets;
    Random r=new Random();

    public ShellTickOp(int tickets){

        this.tickets=tickets;
    }

    @Override
    public void run() {
//      while(true){
//
//          if(tickets>0){
//
//              try {
//                  Thread.sleep(800);
//                  System.out.println(Thread.currentThread().getName()+"在shell第"+(tickets--)+"张票");
//              } catch (InterruptedException e) {
//                  e.printStackTrace();
//              }
//
//          }else {
//              return;
//          }
//          

这里输出到负数了   0   -1  -2:
//      }
        // 解决办法     加入同步块
            while(true){
                synchronized(this){  // 参数是一个对象 任何对象都行  一般用当前对象  用来做对象锁 一个线程进来后就 锁上
                    if(tickets>0){

                        try {
                            Thread.sleep(800);
                            System.out.println(Thread.currentThread().getName()+"在shell第"+(tickets--)+"张票");
                        } catch (InterruptedException e) {
                            e.printStackTrace();
                        }

                    }else {
                        return;
                }
                }
        }

    }
}

2.同步方法
一般不用 因为用了线程就没有意义了

时间: 2024-08-31 07:20:03

多线程带来的数据不一致的相关文章

MySQL如何对主从数据不一致的情况进行校验并继续同步

两台MySQL,发生了种种种种,导致了两个表的数据不一致,但是同步还在正常进行,后来意识到这种问题(可能之前skip啊,或者一开始搭建的时候就是不一致的状态),该如何修复呢? 我们看可以来看下percona-toolkit这个工具是如何修复这种情况的 校验: 主库:192.168.100.8 3306 从库:192.168.100.12 3305 MySQL version:MySQL-5.6.30 1.master 服务器安装yum依赖包 yum install perl perl-devel

用ILSpy运行c#程序,与单独运行数据不一致是什么原因?

问题描述 用ILSpy运行c#程序,与单独运行数据不一致是什么原因? 这个是用ILSpy运行的数据! 这个是独立运行的数据! 本想破解里面的算法用来学习一下,通过一比对发现ILSpy的这个Bug. 软件的下载的地址:http://rj.baidu.com/soft/detail/26841.html?ald 解决方案 ILSPY不是反编译工具么,还能独立运行C#程序? 难道哥又OUT了...

线程间通讯-Java写交易客户端(多线程、对象数据传送等简单问题)

问题描述 Java写交易客户端(多线程.对象数据传送等简单问题) 有如下几个类: 1.Ticker类//此Ticker为简单java类,其属性与服务器传来的json字段对应,通过Decoder类反系列化json//反系列化以后的数据,用以做逻辑判断,符合逻辑,则向服务器发出某种请求 public class Ticker implements Serializable { private static final long serialVersionUID = 2015022601L; priv

MFC关于多线程计算脏数据的问题

问题描述 MFC关于多线程计算脏数据的问题 请问多线程运算为什么会出现脏数据,脏数据造成运算结果不稳定怎么避免和预防? 解决方案 所谓脏数据,就是一个线程修改了这个数据的副本,另一个线程持有的副本并没有更新,还是原来的数据,所以叫脏数据. 解决方案二: 数据没有加锁,被多个线程同时修改等.

java多线程 读取队列数据,减少耦合性怎么做?

问题描述 java多线程 读取队列数据,减少耦合性怎么做? 本人不太擅长多线程,但最近因为工作需要,使用到了,所以来求助了,需求这样的:要固定创建线程池跑线程,同时访问数据进来了后加入队列,线程去读取队列后处理程序,这样使访问数据和线程耦合性降低,彼此减少影响.这个代码怎么写,谁能给个demo,知道的别写个大概,写详细点,谢谢了.(我原来是来一个访问就new一个线程处理,老大说这样不好,就提了这样的要求) 解决方案 建议楼主使用反射试试 解决方案二: 我觉得反射应该可以解决这个问题,可是反射不怎

请问各位牛人大侠,用离线浏览器抓取有网站限制多线程快速抓数据的网站该用那些软件

问题描述 本人工作需要,下在一个网站完整的镜象离线浏览,所以用离线浏览器teleportpro抓取一个网站,结果遇到了棘手问题,该抓取网站有限制多线程快速抓数据的设置,结果抓取了一堆请稍候......的页面,请问该用那些软件下,或者teleportpro遇到这种网站该如何设置?补充一点若我发错地方请牛人大侠跟贴告知一下这样的问题去那里问比较好,谢谢了.

请教多线程操作同一个数据表时,怎么避免表死锁

问题描述 最近有一个数据采集的项目,要求可以多路并发,遇到多线程操作同一个数据表的问题,经常发生表死锁,求各位大侠帮忙,大约有20-40个进程实例化读取类,类中Receive方法接收数据并存储上代码publicclassclsTranslateObj{privatevoidReceive(){intlenReceive=0;byte[]receivedByte=newbyte[BUFFER_SIZE];//接收返回字节数组_rtnStr=string.Empty;while(_flgConnec

统计法草案:政府部门取得的统计数据不一致,不得公布

中新网6月22日电 十一届全国人大常委会第九次会议今天下午开幕,继续审议农村土地承包经营纠纷仲裁法草案.统计法修订草案.国家赔偿法修正案草案:首次审议保守国家秘密法修订草案.驻外外交人员法草案.海岛保护法草案等. 再次提请全国人大常委会审议的统计法修订草案明确规定:国家统计数据以国家统计局公布的数据为准,政府有关部门统计调查取得的统计数据,与本级人民政府统计机构统计调查取得的统计数据不一致的,不得公布. 统计法修订草案二审稿中规定,县级以上地方人民政府设立独立的统计机构,乡.镇人民政府设置统计工

政府部门统计数据不一致将不得公布

22日提交十一届全国人大常委会第九次会议审议的统计法修订草案规定,政府有关部门统计调查取得的统计数据,与本级人民政府统计机构统计调查取得的统计数据不一致的,不得公布. 本报曾于2006年.2007年连续报道了<两级GDP差距额达8048亿>.<1.24万亿! 两级GDP差额再次扩大>,指出两级GDP存在巨大差异.如今,统计数据的重要性正式得到立法层面的重视.有专家表示,该条款旨在避免同级政府统计数据的"输出多门",对当前力保统计数据真实性具有重要意义. 避免数据