Java多线程实战
来源:互联网 发布:中国纺织品出口数据 编辑:程序博客网 时间:2024/06/03 23:05
实习的时候发现多线程方面知识比较薄弱,这段时间在学习汪文君老师的《Java高并发编程实战》,并做一些学习笔记,供以后复习。
我们在单线程情况下执行两个方法,默认是按照顺序执行的,如下面的读写数据库操作:
public class TryConcurrency1 { public static void main(String[] args) { readFromDataBase(); writeDataToFile(); } private static void readFromDataBase() { //read data from database and handle it. try { println("Test1:"+"Begin read data from db."); Thread.sleep(1000 * 3L); println("Test1:"+"Read data done and start handle it."); } catch (InterruptedException e) { e.printStackTrace(); } println("Test1:"+"The data handle finish and successfully."); } private static void writeDataToFile() { try { println("Test2:"+"Begin write data to file."); Thread.sleep(1000 * 10L); println("Test2:"+"Write data done and start handle it."); } catch (InterruptedException e) { e.printStackTrace(); } println("Test2:"+"The data handle finish and successfully."); } private static void println(String message) { System.out.println(message); }}
输出结果为:
如果我们要并行的读写数据库,那么我们就要用到多线程操作,如:
public class TryConcurrency1 { public static void main(String[] args) { Thread t=new Thread("read-Thread"){ @Override public void run() { println(Thread.currentThread().getName());//main readFromDataBase(); } }; t.start(); //通过匿名内部类的方式 new Thread("write-Thread"){ @Override public void run() { writeDataToFile(); } }.start(); } private static void readFromDataBase() { //read data from database and handle it. try { println("Test1:"+"Begin read data from db."); Thread.sleep(1000 * 3L); println("Test1:"+"Read data done and start handle it."); } catch (InterruptedException e) { e.printStackTrace(); } println("Test1:"+"The data handle finish and successfully."); } private static void writeDataToFile() { try { println("Test2:"+"Begin write data to file."); Thread.sleep(1000 * 10L); println("Test2:"+"Write data done and start handle it."); } catch (InterruptedException e) { e.printStackTrace(); } println("Test2:"+"The data handle finish and successfully."); } private static void println(String message) { System.out.println(message); }}
值得注意的是:创建Thread并非一个线程,只有当启动之后才会成为一个线程。
阅读全文
0 0
- Java多线程实战
- Java多线程编程实战精要
- 实战体会Java多线程编程的精要
- 实战体会Java多线程编程(一)
- 实战体会Java多线程编程(二)
- 实战体会Java的多线程编程
- 实战体会Java的多线程编程
- 实战体会Java的多线程编程
- java多线程编程 - 实战篇(一)
- java多线程编程 - 实战篇(二)
- java多线程编程 - 实战篇(三)
- java多线程编程 - 实战篇(四)
- [转]实战体会Java多线程编程精要
- 实战体会Java多线程编程精要
- 实战体会Java多线程编程精要
- 实战体会Java多线程编程精要
- 实战体会Java多线程编程精要
- 实战体会Java多线程编程精要
- table总结
- 【量化投资】基金择时策略浅析(3) -实用择时方法
- Windows/Linux 系统 C++ 管理信息系统(MIS)生成工具 BoWo 2.8
- Ti CC2530 i2c 驱动
- IIS Express Worker Process 已停止工作 使用vs2013调试mvc出错
- Java多线程实战
- 小米云深度学习平台的架构设计与实现
- c++类成员中结构体的初始化
- bokeh 设置做图工具
- 对于js定时器中带有参数的回调函数没有延迟效果的解决方法
- Android解决65535限制
- 你怎么理解ioc/DI?
- valign和vertical-align区别
- 3