怎么实现InputStream.read的超时功能 超时蓝牙javaSocketAndroid 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 package com.test;import java.io.IOException;import java.io.InputStream;import java.io.PipedInputStream;import java.io.PipedOutputStream;import java.util.concurrent.Callable;import java.util.concurrent.ExecutionException;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;import java.util.concurrent.Future;import java.util.concurrent.TimeUnit;import java.util.concurrent.TimeoutException;public class MyTest { /** * @param args */ static void read(final InputStream inputStream, final byte[] b) { int readByte = 1; // Read data with timeout ExecutorService executor = Executors.newFixedThreadPool(2); Callable<Integer> readTask = new Callable<Integer>() { @Override public Integer call() throws Exception { return inputStream.read(b, 0, b.length); } }; Future<Integer> future = executor.submit(readTask); try { readByte = future.get(2000, TimeUnit.MILLISECONDS); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (ExecutionException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (TimeoutException e) { // TODO Auto-generated catch block e.printStackTrace(); } future.cancel(true); System.out.println("End!!!"); executor.shutdown(); } public static void main(String[] args) { // TODO Auto-generated method stub final PipedOutputStream outputStream = new PipedOutputStream(); PipedInputStream inputStream = null; try { inputStream = new PipedInputStream(outputStream); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } Runnable writeTask = new Runnable() { @Override public void run() { try { String buf = "caonima"; Thread.sleep(2000); outputStream.write(buf.getBytes()); buf = "hehe"; outputStream.write(buf.getBytes()); outputStream.write(3); Thread.sleep(5000); outputStream.close(); } catch (Exception e) { e.printStackTrace(); } System.out.println("Write end!"); } }; Thread thread = new Thread(writeTask); thread.start(); byte[] b = new byte[100]; read(inputStream, b); System.out.println("Result:" + new String(b)); }}还是自己解决了吧 从webservice 返回一段话怎么显示在textview上 android中实现图片自动切换 PhonestateListener怎么取消监听? SoundPool真机没有声音? URL地址中有汉字则无法下载图片 求教,如何设置WebView的属性? 创建的新工程没有R文件 在onkeydown中再次使用ft.commit报错 U盘拨出程序崩溃 如何去除按下音量键后的多余音量控制条 代码量达到10万行的软件? android谷歌地图问题
package com.test;import java.io.IOException;
import java.io.InputStream;
import java.io.PipedInputStream;
import java.io.PipedOutputStream;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;public class MyTest { /**
* @param args
*/
static void read(final InputStream inputStream, final byte[] b) {
int readByte = 1;
// Read data with timeout
ExecutorService executor = Executors.newFixedThreadPool(2);
Callable<Integer> readTask = new Callable<Integer>() {
@Override
public Integer call() throws Exception {
return inputStream.read(b, 0, b.length);
}
};
Future<Integer> future = executor.submit(readTask);
try {
readByte = future.get(2000, TimeUnit.MILLISECONDS);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ExecutionException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (TimeoutException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
future.cancel(true); System.out.println("End!!!");
executor.shutdown();
} public static void main(String[] args) {
// TODO Auto-generated method stub
final PipedOutputStream outputStream = new PipedOutputStream();
PipedInputStream inputStream = null;
try {
inputStream = new PipedInputStream(outputStream);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} Runnable writeTask = new Runnable() {
@Override
public void run() {
try {
String buf = "caonima"; Thread.sleep(2000);
outputStream.write(buf.getBytes());
buf = "hehe";
outputStream.write(buf.getBytes());
outputStream.write(3); Thread.sleep(5000);
outputStream.close();
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("Write end!");
}
};
Thread thread = new Thread(writeTask);
thread.start();
byte[] b = new byte[100];
read(inputStream, b);
System.out.println("Result:" + new String(b));
}}还是自己解决了吧