为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

java多线程按顺序读数据

2018-01-31 5页 doc 17KB 18阅读

用户头像

is_654168

暂无简介

举报
java多线程按顺序读数据java多线程按顺序读数据 DBTest.java package test.thread.test; /** * 模拟一个数据库加载数据 * * @author wangzi6hao */ public class DBTest { /** * 模拟初使化从数据库中加次数据 */ public static void initListObject() { for (int i = 1; i list = new LinkedList();// 定义全局数据存放位置 public final st...
java多线程按顺序读数据
java多线程按顺序读数据 DBTest.java package test.thread.test; /** * 模拟一个数据库加载数据 * * @author wangzi6hao */ public class DBTest { /** * 模拟初使化从数据库中加次数据 */ public static void initListObject() { for (int i = 1; i <= 10; i++) ListPool.list.add("linkedList" + i); } /** * 模拟list数据快使用完成时,再到数据库中加载数据. * * @param count * 添加的个数 */ public static void addListObject(int count) { String str = ListPool.list.getLast().replaceAll("linkedList", ""); int k = Integer.parseInt(str); for (int i = 1; i <= count; i++) { int j = k + i; ListPool.list.add("linkedList" + j); } System.out.println("增加list后的大小:" + ListPool.list.size()); } /** * 删除list数据 */ public static void removeListObject() { ListPool.list.remove(0); System.out.println("删除一个list后的大小:" + ListPool.list.size()); } } ListPool.java package test.thread.test; import java.util.LinkedList; public class ListPool { public static LinkedList list = new LinkedList();// 定义全局数据存放位置 public final static int THREAD_COUNT = 10;// 定义最大启动线程个数 } ============================================================= DoSomething.java package test.thread.test; public class DoSomething implements Runnable { public void run() { try { while (true) { System.out.println("第一次得到大小:" + ListPool.list.size()); while (ListPool.list.size() > 1) {// 必须保留最后一个,做为下一次更新时的起初id String info = ""; synchronized (ListPool.list) { info = ListPool.list.get(0); DBTest.removeListObject(); System.out.println("第二次得到大小:" + ListPool.list.size()); if (ListPool.list.size() <= 5) { DBTest.addListObject(5);// 模拟从数据库中加载数据 } } System.out.println(info);// 打印出内容,在现实中模拟到其它地方实现逻辑处理 Thread.sleep((int) (Math.random() * 1000));//睡眠随机的毫秒,实现中可以改成1或者10毫秒,适当的释放资源给其它程序使用 } System.out.println("测试执行"); Thread.sleep(6 * 1000); DBTest.addListObject(5); } } catch (Exception e) { e.printStackTrace(); } } } TestMain.java import test.thread.test.DBTest; import test.thread.test.DoSomething; import test.thread.test.ListPool; public class TestMain { /** * @param args */ public static void main(String[] args) { DBTest.initListObject(); int threadCount = 1; try { while (threadCount < 1000) {// 必须保留最后一个,做为下一次更新时的起初id System.out.println("线程个数:" + threadCount); DoSomething doSomething = new DoSomething(); Thread thread = new Thread(doSomething); //thread.setDaemon(true);//这里在tomcat或者其它的web应用程序方面启动线程时应该设置为true.在tomcat关闭的时候,线程也应该关闭.因为用户线程是基于jvm的,如果不设置为true(守护线程),tomcat关闭的时候,线程还会在运行,那会消耗cpu与内存的. thread.setDaemon(false);//在main中,这里必须设置为用户线程.因为设置为守护线程时,main方法执行完毕线程也自动退出了,事实上程序还没有执行完成. thread.start(); threadCount++; } } catch (Exception e) { e.printStackTrace(); } } }
/
本文档为【java多线程按顺序读数据】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索