我是一名Javascript前端开发人员,但需要编写一个简单的Java程序来编写文件并发送Email和HTTP请求。
以下是我用来将日志写入磁盘文件的Java代码:
int count = 0;
unsigned int tmp_bitmap = x;
while (tmp_bitmap > 0) {
int next_psn = __builtin_ffs(tmp_bitmap) - 1;
tmp_bitmap &= (tmp_bitmap-1);
id[count++] = next_psn;
}
您可以忽略细节。
我真正的问题是,对于那些繁重的IO操作,例如:文件读取,发送电子邮件和发出HTTP请求(将数据发布到Web挂钩),如何在Java中以非阻塞异步方式执行此操作?我知道在Javascript中使用回调是标准的,但在Java中,你如何做异步http请求?
谢谢!
答案 0 :(得分:5)
Java中最接近的概念是Future。
但是您应该知道Java具有多线程并发模型,而不是具有异步并发模型的单线程JavaScript。如果您对这个概念不熟悉,那么最好从Tutorial开始。
对于IO操作,您应该考虑non-blocking IO API。
答案 1 :(得分:1)
您可以使用FutureTask。您应该实现Callable
接口。这是sample
答案 2 :(得分:0)
你应该使用新的线程,这不会阻止主线程
http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html
线程意味着你可以一次做多件事(简单地告诉)
您可以按如下方式调用该函数:
1. Setup easy install (windows - simplified)
a. download ez.setup.py (https://bootstrap.pypa.io/ez_setup.py) from 'https://pypi.python.org/pypi/setuptools'
b. move ez.setup.py to C:\Python27\
c. open cmd prompt
d. cd C:\Python27\
e. C:\Python27\python.exe ez.setup.py install
但是确保线程运行时SOME_TEXT不会改变
并确保日志在某个时间结束,如果不是,您可以多次登录,并且会有许多线程可能会造成麻烦。
要了解更多相关信息,请使用@SergeyPetunin的答案。