java se-java队列请教,大神快来指点下

问题描述

java队列请教,大神快来指点下

我socket服务器与客户端通信,使用BlockQueue来实现生产和消费

这个语句是在已连接客户端列表中查找已选择的客户端,并获取这个客户端的发送队列,将发送文本框的数据发送到BlockQueue中,也就是数据的生产者
for (StreamFactory currentStream : myMainFram.myStreamFactory) {

            if(currentStream.getDescsString().equals(ClientListJPanel.getItemAt(myServer.getSelectedClient()))){

                byte[] temp = NetSendArea.getText().getBytes();

                for (byte a : temp) {

                    try {       

                        currentStream.getMybBlockQueueTool().getTxQueue().put(a);;

                    } catch (InterruptedException e) {

                        // TODO Auto-generated catch block

                        e.printStackTrace();

                    }

                    System.out.println("原数据"+a);

                }

            }

        }

这个客户端里面的线程,读取发送队列是不是有数据,如果有,用这个客户端的IO流发送数据
while(true){

            Byte temp = null;

            try {

                temp = myBlockQueueTool.getTxQueue().poll(10, TimeUnit.MILLISECONDS);

            } catch (InterruptedException e) {

                // TODO Auto-generated catch block

                e.printStackTrace();

            }

            if(temp != null){

                System.out.println(temp.byteValue());

                try {

                    myiInOutPutStream.getMyoutputStream().write(temp.byteValue());

                } catch (IOException e) {

                    // TODO Auto-generated catch block

                    e.printStackTrace();

                }

            }

            else {

                break;

            }

        }

现在现象是,我在发送文本框输入“张雄”,这俩汉字内码是
张 D5C5 雄D0DB

程序打印的数据:
不正常的时候

原数据-43
-43
原数据-59
原数据-48
原数据-37
-48
-37
-59

正常的时候
原数据-43
原数据-59
原数据-48
原数据-37
-43
-59
-48
-37

queue好像是线程安全的,为什么会出现这个现象,从队列读取的数据顺序不是我放进去的顺序,导致发送出去的汉字不对

解决方案

java自定义ArrayList排序, 大神略过

解决方案二:

你是加锁了,但是你只同步了单个的字符,而没有将他们视作整体。

时间: 2024-12-30 14:30:13

java se-java队列请教,大神快来指点下的相关文章

java多线程问题,请教大神,多谢

问题描述 java多线程问题,请教大神,多谢 class Res{ String name; String sex;}class Input implements Runnable{ private Res r;//这句是什么意思?跟Res r = new Res();有什么区别? Input(Res r) { this.r=r; } public void run() { int x = 0; while(true) { if(x==0) { r.name=""mike"&

jqueryui-新手请教大神一个关于JQueryEasyUI下Combogrid控件的一个问题

问题描述 新手请教大神一个关于JQueryEasyUI下Combogrid控件的一个问题 请教如何才能如图所示显示下拉框里的数据?我引用了例子里同样的方法,可是为什么显示不出来啊? 解决方案 看看你的数据格式对不对,是不是少引了什么js,页面F12看控制台有没有错误信息 解决方案二: 不明白你要搞什么,combogrid的grid不是已经显示出来了,你是要干嘛..下拉框没有显示你选择的grid数据行信息? 解决方案三: 是不是少引了什么js,页面F12看控制台有没有错误信息

asp.net-新手请教大神一个关于JQueryEasyUI下Combogrid控件的一个问题

问题描述 新手请教大神一个关于JQueryEasyUI下Combogrid控件的一个问题 请教如何才能如图所示显示下拉框里的数据?我引用了例子里同样的方法,可是为什么显示不出来啊? 解决方案 效果图 页面代码,代码中 url: '../combogrid/datagrid_data1.json'里面可以换成你后台请求数据路径 解决方案二: Combogrid的数据使用ajax从服务器上获取,你这里没显示可能有两个原因:1服务器端没传过来数据,2服务器传来了数据,但是你的前台写的有问题. 建议你把

苹果-打包提交到iTunes connect报二进制文件错误,请各位大神们帮忙指点下啊,急上线,谢谢谢谢!

问题描述 打包提交到iTunes connect报二进制文件错误,请各位大神们帮忙指点下啊,急上线,谢谢谢谢! We have discovered one or more issues with your recent delivery for "芥末音乐". To process your delivery, the following issues must be corrected: Invalid Swift Support - The files libswiftCoreA

请教大神帮我解决下微信JSSDk接口签名错误的问题?在线等

问题描述 config配置权限验证时要获取接口的签名首先要根据oppid获取access_token公众号的全局唯一票据然后再根据access_token获取jsapi_ticket最后再根据jsapi_ticket获得签名但是怎么弄都提示签名错误.......官网说:参数按照字段名的ASCII码从小到大排序确认config中noncestr,timestamp与用以签名中的对应noncestr,timestamp一致.确认url是页面完整的url,包括GET参数部分.确认config中的app

请教大神们一个java包装类的问题

问题描述 请教大神们一个java包装类的问题 请教大神们一个java包装类的问题, String str = "abc"; String str2 = "abc"; System.out.println(str == str2); Integer i = Integer.valueOf(1); Integer i2 = Integer.valueOf(1); System.out.println(i ==i2); 我知道str和str2是存放在字符串常量池中的,所以

mfc c c++-请教 大神 C程序内存读写错误。

问题描述 请教 大神 C程序内存读写错误. //定义两个全局变量 CNetSecure *pSecure=NULL; CHardWare *pHaredWare=NULL; //硬件信息按钮触发事件 void CFireWallTempDlg::OnBnClickedHardware() { //删除空间防止有残留 DeleteMem(); // TODO: 在此添加控件通知处理程序代码 CRect rect; GetDlgItem(IDC_PICSTATIC)->GetWindowRect(&am

couchdb-各位大神快进来java解答

问题描述 各位大神快进来java解答 本人大二学生,以后想往java方向发展,到课堂学的东西毕竟有限,所以希望各位有没有什么好的建议对于我在java中该干些什么,或者买些什么书 解决方案 首先,Java基础无语法系统了解,会用也还了解其原理,经典书籍<<Java编程思想>>和<<Java编程规范>>:其次,就是Java Web l技术框架,系统地了解,学会用:最后就是进阶学习,Java虚拟机底层知识,Java并发编程基础.关注jdk源代码,那都是大师级人物的

java中空字符串可以用indexOf么?如果用了是不是会报错?请教大神

问题描述 java中空字符串可以用indexOf么?如果用了是不是会报错?请教大神 java中空字符串可以用indexOf么?如果用了是不是会报错?请教大神 解决方案 可以啊,只要是非null的字符串类型的变量都可以调用string类的这个方法的. 解决方案二: public class NullStringTest { public static void main(String[] args) { String s1 = null; //空指针异常 // System.out.println