Java线程间数据传递
来源:互联网 发布:吉他入门软件下载 编辑:程序博客网 时间:2024/05/17 20:34
线程共享数据
Java中共享数据,可以使用一个共享对象,或者使用一个阻塞队列。接下来看一个日志的例子。其中主线程可以记录日志,而另外开启了一个线程进行日志的输出
public class LogService { private final BlockingQueue<String> queue; private final LoggerThread logger; //关闭标记 private volatile boolean isShutDown; public void start() { logger.start(); } public void stop() { isShutDown = true; logger.interrupt(); } public void log(String msg) throws InterruptedException { queue.put(msg); } public LogService() { queue = new LinkedBlockingQueue<String>(); logger = new LoggerThread(); } private class LoggerThread extends Thread { @Override public void run() { try { while (true) { if (isShutDown) break; System.out.println(queue.take()); } } catch (InterruptedException e) { e.printStackTrace(); } } }}
延迟处理
有时一个任务开启一个线程执行,需要等待数据返回再进行处理,但又希望主线程可以继续跑下去。这时可以使用Future进行处理。代码
public class GetData { private final ExecutorService executor = Executors.newSingleThreadExecutor(); public Future<String> getData() { return executor.submit(new Callable<String>() { @Override public String call() throws Exception { System.out.println("my data!"); return "hello world!"; } }); }}
测试
public static void main(String[] args) throws InterruptedException, ExecutionException { GetData data = new GetData(); Future<String> future = data.getData(); //做其他事情 System.out.println("do something!"); String str = future.get(); System.out.println(str); }
其他参考
《Java并发编程实战》
1 0
- Java线程间数据传递
- 线程间数据传递
- Java 向线程传递数据
- Java线程7:线程数据传递
- java多线程之通过Exchanger线程间传递数据
- 七.java多线程之线程数据传递
- 8.线程数据传递
- Java多线程:向线程传递数据的三种方法
- Java多线程(4)——线程数据传递
- java多线程3-线程的同步与数据传递
- 不同线程之间传递数据
- C# 给线程传递数据
- 线程间通信——数据传递和同步
- 一致性控制——解决线程间数据传递问题
- Android 使用接口回掉实现线程间数据传递
- 线程间的数据共享与参数传递
- java与oracle type间传递数据
- JAVA数据传递
- Android02Android API Guide学习和常用布局及基本UI控件
- Java基础学习——泛型(generics)二
- java学习路线目录
- 安装Python2.7其他必要库
- chrome学习连接
- Java线程间数据传递
- POJ 3020 Antenna Placement
- 人体的构造
- 设置Eclipse单行文本长度
- Linux设置静态ip后遇到的问题及其解决方案
- Maven简介和安装配置
- Echarts图表的简单实现
- Effective C++读书笔记---确定对象被使用前已先被初始化
- 别人的大学 ACM进阶指南