Java线程池需要不断的学习 在学习的时候我们就要注意不少的问题 下面我们就来看看具体的语言运作环境如何才能满足Java线程池相关程序的运行 希望大家有所收获
无论是接收Runnable型参数 还是接收Callable型参数的submit()方法 都会返回一个Future(也是一个接口)类型的对象 该对象中包含了任务的执行情况以及结果 调用Future的boolean isDone()方法可以获知任务是否执行完毕 调用Object get()方法可以获得任务执行后的返回结果 如果此时任务还没有执行完 get()方法会保持等待 直到相应的任务执行完毕后 才会将结果返回
我们用下面的一个例子来演示Java 中Java线程池的使用
Java代码
import ncurrent *
public class ExecutorTest {
public static void main(String[] args) throws
InterruptedException
ExecutionException {
ExecutorService es = Executors newSingleThreadExecutor()
Future fr = es submit(new RunnableTest())// 提交任务
Future fc = es submit(new CallableTest())// 提交任务
// 取得返回值并输出
System out println((String) fc get())
// 检查任务是否执行完渣姿哪毕
if (fr isDone()) {
System out println( 执行完毕 RunnableTest run() )
} else {
System out println( 未执行完 RunnableTest run() )
}
// 检查任务是否执行完毕
if (fc isDone()) {
System out println( 执行完毕 CallableTest run() )
册游 } else {
System out println( 未执行完 CallableTest run() )
}
// 停止如码线程池服务
es shutdown()
}
}
class RunnableTest implements Runnable {
public void run() {
System out println( 已经执行 RunnableTest run() )
}
}
class CallableTest implements Callable {
public Object call() {
System out println( 已经执行 CallableTest call() )
return 返回值 CallableTest call()
}
}
import ncurrent *
public class ExecutorTest {
public static void main(String[] args) throws
InterruptedException
ExecutionException {
ExecutorService es = Executors newSingleThreadExecutor()
Future fr = es submit(new RunnableTest())// 提交任务
Future fc = es submit(new CallableTest())// 提交任务
// 取得返回值并输出
System out println((String) fc get())
// 检查任务是否执行完毕
if (fr isDone()) {
System out println( 执行完毕 RunnableTest run() )
} else {
System out println( 未执行完 RunnableTest run() )
}
// 检查任务是否执行完毕
if (fc isDone()) {
System out println( 执行完毕 CallableTest run() )
} else {
System out println( 未执行完 CallableTest run() )
}
// 停止线程池服务
es shutdown()
}
}
class RunnableTest implements Runnable {
public void run() {
System out println( 已经执行 RunnableTest run() )
}
}
class CallableTest implements Callable {
public Object call() {
System out println( 已经执行 CallableTest call() )
return 返回值 CallableTest call()
}
}
运行结果
已经执行 RunnableTest run()
已经执行 CallableTest call()
返回值 CallableTest call()
执行完毕 RunnableTest run()
执行完毕 CallableTest run()
lishixinzhi/Article/program/Java/gj/201311/27283感兴趣,查了半天,轮租轮只能将域名转腊信换为IP,IP转域名不是很好用。源型派代码如下:
import java.net.*
public class GetAddress {
public static void main (String[] argv) throws Exception {
InetAddress host=null
//host=InetAddress.getLocalHost()
host=InetAddress.getByName("www.baidu.com")
//host=InetAddress.getByAddress(new byte[]{(byte)202,108,22,43})
byte[] ip=host.getAddress()
for (int i=0i<ip.lengthi++) {
if (i>0) System.out.print(".")
System.out.print(ip[i]&0xff)
}
System.out.println("Name:" + host.getCanonicalHostName())
System.out.println()
}
}
如今JAVA语言在全世界范围正如火如荼般的流行,它广范地应用在INTERNET的数据库、多媒体、CGI、及动态网页的制作方面。1999年在美国对JAVA程序员的需求量首次超过C++!作者因最近分析一些扮丛JAVA程序,对JAVA的反编译进行了一番了解,下面将我所了解的情况作以下介绍,希望对JAVA爱好者有所帮助。
JAVA是采用一种称做“字节编码”的程序结构,分为小程序(嵌入到HTML文件中)和应用程序(直接在命令状态下执行)两种类型。无论哪种结构,一旦用JAVAC 命令编译后,均变成后缀为CLASS的同名可执行文件。这种文件是不可阅读的代码。
经查阅了SUN公司的JDK(JDK1.1.3)文档资料后,我找到了一个据称是可反编译JAVA的JAVAP文件(EXE),这个文件位于\JDK\BIN\ 下面,经按说明使用后,感到失望,原来这个“反编译”仅可反编译出JAVA程序的数据区雀坦(定义)、若干方法和类的引用等。
这里我用了一厅岁樱个简单例子来说明问题。
JAVA的源程序hello_java.java如下:
import java.applet.*
import java.awt.*
public class hello_java extends Applet
{
public void paint(Graphics g)
{
g.drawString("Hello Java!\n",20,20)
}
}
经用反编译命令:javap -c -package -public -private hello_java hello.java
得到的反编译结果(hello.java)如下:(有关javap命令的选择参数请见其使用说明,这里-c表示选择了反编译)
Compiled from hello_java.java
public synchronized class hello_java extends java.applet.Applet
/* ACC_SUPER bit set */
{
public void paint(java.awt.Graphics)
public hello_java()
Method void paint(java.awt.Graphics)
0 aload_1
1 ldc #1
3 bipush 20
5 bipush 20
7 invokevirtual #6
10 return
Method hello_java()
0 aload_0
1 invokespecial #5 ()V>
4 return
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)