多线程- 我的java难道是盗版吗(调用有返回值的函数无响应)

问题描述

我的java难道是盗版吗(调用有返回值的函数无响应)

boolean flag = pcSystem.returnTenderResult(bidDocu,tenderDocu);

我在自定义pcSystem类中调用一个具有boolean返回值的函数returnTenderResult(synchronized)

这条语句的上一条语句都会执行,而returnTenderResult内方法一定概率上不执行

(方法内的第一条语句都没有执行,还不涉及方法内具体逻辑),系统涉及了多线程,

这是为什么啊

 public synchronized boolean reviewOtherCommForhelpTask(BidDocu bidDocu,TenderDocu tenderDocu) throws IOException{//评审其他社区寻求帮助任务的时间及资源
        boolean flag = false;
//      ====================================
        Date nowDate = new Date();

        String log = "reviewOtherComm,当前用时"+(nowDate.getTime()-TimerManager.getTimerStamp()[0])+
                "ms"+System.getProperty("line.separator");
        TakeNotes.recordLogs(commid, log);
//      ====================================
        if(bidDocu.getFid()<=CommMessageManager.pcFid){
            //PC
//          ====================================
                    nowDate = new Date();
                    log = "check Pc Task,当前用时"+(nowDate.getTime()-TimerManager.getTimerStamp()[0])+
                            "ms"+System.getProperty("line.separator");
                    TakeNotes.recordLogs(commid, log);
//                  ====================================
            flag = pcSystem.returnTenderResult(bidDocu,tenderDocu);
        }else {
            //Robot
//          ====================================
                    nowDate = new Date();
                    log = "check Robot Task,当前用时"+(nowDate.getTime()-TimerManager.getTimerStamp()[0])+
                            "ms"+System.getProperty("line.separator");
                    TakeNotes.recordLogs(commid, log);
//                  ====================================
            flag = robotSystem.returnTenderResult(bidDocu,tenderDocu);
        }
        return flag;
    }
 public synchronized boolean returnTenderResult(BidDocu forHelpBidDocu,TenderDocu tenderDocu) throws IOException{
        Date nowDate = new Date();
        String log;
        boolean flag = false;
//      =================================
        nowDate = new Date();
        log = "returnTenderResult,当前时间"+
                (nowDate.getTime()-TimerManager.getTimerStamp()[0])+"ms"+
                    System.getProperty("line.separator");
        TakeNotes.recordLogs(commid,log);
//      =================================
}

解决方案

是不是多线程的问题,执行顺序是怎么样的

解决方案二:

java怎么会有盗版的呢?都是官网上直接下载的啊。在被调用方法的第一行打印些调试信息,调试下方法进入执行了吗?
工具是最公正的,肯定有原因的,找找看呗。

解决方案三:

系统要承受的负载能力肯能很大,可能同时有很多个任务在不同的PcSystem类调用相关方法(多线程实现),但在每一个PcSystem类内任务都是排队调用方法的

解决方案四:

肯定是自己程序的问题,不管怎么也不该怀疑到java语言本身吧

时间: 2024-09-19 03:35:58

多线程- 我的java难道是盗版吗(调用有返回值的函数无响应)的相关文章

java中除了非void方法有返回值需要用到return语句外

问题描述 java中除了非void方法有返回值需要用到return语句外 java中除了非void方法有返回值需要用到return语句外,还有其他什么语句需要retrun语句 因为我看程序源码的时候看到一个方法有两条return 语句,我看来看去只发现这段程序代码只有一个方法,其中还有if....else if语句还有try....catch语句. 解决方案 如果直接return就跳出了这个方法,下面的程序不需用执行,否则还会继续下面的逻辑;代码有时候需要捕捉特定的异常给用户一定的反馈,判断异常

Java执行sql语句并获取指定返回值

当我们插入一条数据的时候,我们很多时候都想立刻获取当前插入的主键值返回以做它用.我们通常的做法有如下几种: 1.先 select max(id) +1 ,然后将+1后的值作为主键插入数据库: 2.使用特定数据库的 auto_increment 特性,在插入数据完成后,使用 select max(id) 获取主键值: 3.对于Oracle,使用 sequence 获取值. 对于以上3种方法都无法绝对保证在高并发情况下的操作的原子性. 现记录以下几种获取数据库主键值方法: 1.数据库原生支持的sql

请教:java 线程中队数据库进行操作,程序返回值显示成功,单实际未成功

问题描述 问题描述:近些天公司要让我完成一个导数的模块.我写了一个导数的类AssetImpThread 实现了 Runnable接口.类有一个 初始化方法 init() 调用了 一个利用 jndi连接对数据进行操作的类.我已经 对 进行数据库操作的类进行了测试(main方法中 建立一个jndi的连接),数据库操作类正常运行.然后我对线程进行测试,奇怪的事情发生了,测试类的main() 方法中建立数据库连接, 启动线程,调用线程的init()方法,对数据进行操作.利用 PreparedStatem

jsp 多线程开发与Java并发模型框架

基础知识 Java语言提供了对于线程很好的支持,实现方法小巧.优雅.对于方法重入的保护,信号量(semaphore)和临界区(critical section)机制的实现都非常简洁.可以很容易的实现多线程间的同步操作从而保护关键数据的一致性.这些特点使得Java成为面向对象语言中对于多线程特性支持方面的佼佼者(C++正在试图把boost库中的对于线程的支持部分纳入语言标准). Java中内置了对于对象并发访问的支持,每一个对象都有一个监视器(monitor),同时只允许一个线程持有监视器从而进行

Java调用MySQL存储过程并获得返回值的方法_java

本文实例讲述了Java调用MySQL存储过程并获得返回值的方法.分享给大家供大家参考.具体如下: private void empsInDept(Connection myConnect, int deptId) throws SQLException { CallableStatement cStmt = myConnect.prepareCall("{CALL sp_emps_in_dept(?)}"); cStmt.setInt(1, deptId); cStmt.execute

java多线程问题,java 编程思想书中的例子

问题描述 java多线程问题,java 编程思想书中的例子 在看java编程思想书中的多线程一节,书中对wait,notify,notifyall举了一个例子,模拟给汽车涂蜡和抛光的过程, 因为抛光任务在涂蜡之前是不能尽兴的,反之,涂蜡任务在涂另外一层蜡之前,必须要等抛光任务结束.代码如下: 显示一个汽车类: class Car{ private boolean wanOn=false; public synchronized void waxed(){ waxOn=true; notifyAl

多线程并发之java内存模型JMM

多线程概念的引入是人类又一次有效压寨计算机的体现,而且这也是非常有必要的,因为一般运算过程中涉及到数据的读取,例如从磁盘.其他系统.数据库等,CPU的运算速度与数据读取速度有一个严重的不平衡,期间如果按一条线程执行将会在很多节点产生阻塞,使计算效率低下.另外,服务器端是java最擅长的领域,作为服务器必须要能同时响应多个客户端的请求,同样需要多线程的支持.在多线程情况下,高并发将带来数据的共享与竞争问题,tomcat作为中间件将多线程并发等细节尽量封装起来处理,使用户对多线程透明,更多地关注业务

java多线程编程之java线程简介_java

一.线程概述 线程是程序运行的基本执行单元.当操作系统(不包括单线程的操作系统,如微软早期的DOS)在执行一个程序时,会在系统中建立一个进程,而在这个进程中,必须至少建立一个线程(这个线程被称为主线程)来作为这个程序运行的入口点.因此,在操作系统中运行的任何程序都至少有一个主线程.进程和线程是现代操作系统中两个必不可少的运行模型.在操作系统中可以有多个进程,这些进程包括系统进程(由操作系统内部建立的进程)和用户进程(由用户程序建立的进程):一个进程中可以有一个或多个线程.进程和进程之间不共享内存

《Java并发性和多线程介绍》-Java TheadLocal

原文链接 作者:Jakob Jenkov   查看全部文章 Java中的ThreadLocal类可以让你创建的变量只被同一个线程进行读和写操作.因此,尽管有两个线程同时执行一段相同的代码,而且这段代码又有一个指向同一个ThreadLocal变量的引用,但是这两个线程依然不能看到彼此的ThreadLocal变量域. 1.创建一个ThreadLocal对象 2.访问ThreadLocal对象 3.ThreadLocal泛型 4.初始化ThreadLocal 5.Full ThreadLocal Ex