网站首页 > java教程 正文
//19.包和包装机制
jar cvf /tmp/test.jar . // 当前目录压缩到test.jar中
jar xvf /tmp/test.jar // 把test.jar解压到当前目录
从指定class运行jar文件
a. Main-Class: HelloWord // 注意中间有一个空格
b. jar cvmf manifest.mf hello.jar HelloWorld.class
c. java -jar hello.jar
*/
// 停止线程 - 不要使用stop()方法
private boolean done = false;
public void run() {
while (!done) {
//todo
}
}
public void shutDown() {
done = true;
}
可以调用shutDown()方法来结束线程
// 如果读取IO的时候出现堵塞,那么可以使用下面方法
public void shutDown() throws IOException {
if (io != null)
io.close();
}
// 启动一线程,等待控制台输入,使用join()方法来暂停当前线程,直到其他线程调用
Thread t = new Thread() {
public void run() {
System.out.println("Reading");
try {
System.in.read();
} catch (IOException e) {
System.err.println(e);
}
System.out.println("Thread finished.");
}
};
System.out.println("Starting");
t.start();
System.out.println("Joining");
try {
t.join();
} catch (InterruptedException e) {
System.out.println("Who dares imterrupt my sleep?");
}
System.out.println("Main finished.");
// 加锁保证同步
Lock lock = new ReentrantLock();
try {
lock.lock();
// todo
} finally {
lock.unlock();
}
线程通信wait(), notify(), notifyAll()
生产者-消费者模式
Executors
//20.Java线程
// 停止线程 - 不要使用stop()方法
private boolean done = false;
public void run() {
while (!done) {
//todo
}
}
public void shutDown() {
done = true;
}
可以调用shutDown()方法来结束线程
// 如果读取IO的时候出现堵塞,那么可以使用下面方法
public void shutDown() throws IOException {
if (io != null)
io.close();
}
// 启动一线程,等待控制台输入,使用join()方法来暂停当前线程,直到其他线程调用
Thread t = new Thread() {
public void run() {
System.out.println("Reading");
try {
System.in.read();
} catch (IOException e) {
System.err.println(e);
}
System.out.println("Thread finished.");
}
};
System.out.println("Starting");
t.start();
System.out.println("Joining");
try {
t.join();
} catch (InterruptedException e) {
System.out.println("Who dares imterrupt my sleep?");
}
System.out.println("Main finished.");
// 加锁保证同步
Lock lock = new ReentrantLock();
try {
lock.lock();
// todo
} finally {
lock.unlock();
}
线程通信wait(), notify(), notifyAll()
生产者-消费者模式
Executors
//21. 内省或“命令类的类”
// 反射
Class c = Class.forName("java.lang.String");
Constructor[] cons = c.getConstructors();
for (int i = 0; i < cons.length; i++) {
System.out.println(cons[i].toString());
}
Method[] meths = c.getMethods();
for (int i = 0; i < meths.length; i++) {
System.out.println(meths[i].toString());
}
// 动态装载类
Class c = Class.forName("java.lang.String");
Object obj = c.newInstance();
// 通过反射调用类的方法
class X {
public void master(String s) {
System.out.println("Working on \"" + s + "\"");
}
}
Class clx = X.class;
Class[] argTypes = {String.class};
Method worker = clx.getMethod("master", argTypes);
Object[] theData = {"Chocolate chips"};
worker.invoke(new X(), theData);
输出: Working on "Chocolate chips"
//22.Java与其他语言的结合
// 执行CMD命令,在Eclipse控制台输出
Process p = Runtime.getRuntime().exec("C:/StudySource/ver.cmd");
p.waitFor(); // 等待命令执行完
BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream()));
String s;
while ((s = br.readLine()) != null)
System.out.println(s);
// 调用Jython - 计算22.0/7
BSFManager manager = new BSFManager();
String[] fntypes = {".py"};
manager.registerScriptingEngine("jython", "org.apache.bsf.engines.jython.JythonEngine", fntypes);
Object r = manager.eval("jython", "testString", 0, 0, "22.0/7");
System.out.println("Result type is " + r.getClass().getName());
System.out.println("Result value is " + r);
// 调用C++,使用JNI
- 上一篇: 阿里巴巴Java编程规范(6):安全规约
- 下一篇: Java IO流之文件输入输出流
猜你喜欢
- 2025-01-12 java版gRPC实战之二:服务发布和调用
- 2025-01-12 Controller层代码这么写,任督二脉全打通
- 2025-01-12 Java手写数据库(第一章)
- 2025-01-12 使用Java语言写一个"Hello, World!" 程序
- 2025-01-12 Java系统开发从入门到精通第三讲(文字版)
- 2025-01-12 2020必看!开发五年的大佬日常工作中所使用的java代码技巧
- 2025-01-12 Java IO流之文件输入输出流
- 2025-01-12 阿里巴巴Java编程规范(6):安全规约
- 2025-01-12 Java 业务代码问题排查与异常处理:从“啊这”到“稳了”
- 2025-01-12 理解 Liquor :动态编译Java代码的神器
你 发表评论:
欢迎- 04-24Java Collections 工具类集合框架中常用算法解析
- 04-24桶排序的简单理解
- 04-24Java集合框架底层实现原理大揭秘
- 04-24Java 集合框架全面解析:选对数据结构,提升开发效率
- 04-24c#集合排序
- 04-24Java面试中常被问到的集合类深度解读
- 04-24VBA技术资料MF278:对集合进行排序
- 04-24Spring 最常用的 7 大类注解,史上最强整理
- 最近发表
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)