java多线程返回结果汇总(java 子线程如何返回结果给主线程)
本文目录
java 子线程如何返回结果给主线程
可以的 你的主线程和子线程 synchronized 一个boolean变量(flag)当子线程到达一定条件是将其设置成false;而主线程run()做这样的设置 while(flag){}这样主线程就会结束了~~其实有直接关闭线程的方法 但是不建议这么做~~防止出现死锁.
关于JAVA多线程的过程,请高手帮忙分析一下那个结果是如何出来的.(一定有加分)
BankAccount类的acount 对象对于三个线程来说是共享变量,因为你的方法store()方法没有同步关键字synchronized,所以三个线程是可以同时执行共享变量的store方法的。而store方法中有两行代码,一个是账户值增加,一个是打印,他们不是原子(虽然在物理学上已经过时了)操作,所以不能保证打印的时候账户值是不是已经被其他线程修改了。 结果是怎么得来的?有了以上分析就很easy了。 三个线程都进入了store方法并且如threa-1将money 变成100,在这之后,threa-2和threa-3同时取了money的值(取到各自线程的临时变量里去),发现是100,然后加100后,在各自更新共享变量money,money变成了200.最后各自打印,thread-2 200,thread-3 200。后面的情况也是这样。
java多线程读取数据库最后汇总
创建数据库选择开始菜单中→程序→【Management SQL Server 2008】→【SQL Server Management Studio】命令,打开【SQL Server Management Studio】窗口,并使用Windows或 SQL Server身份验证建立连接。在【对象资源管理器】窗口中展开服务器,然后选择【数据库】节点右键单击【数据库】节点,从弹出来的快捷菜单中选择【新建数据库】命令。执行上述操作后,会弹出【新建数据库】对话框。在对话框、左侧有3个选项,分别是【常规】、【选项】和【文件组】。完成这三个选项中的设置会后,就完成了数据库的创建工作,在【数据库名称】文本框中输入要新建数据库的名称。例如,这里以“新建的数据库”。在【所有者】文本框中输入新建数据库的所有者,如sa。根据数据库的使用情况,选择启用或者禁用【使用全文索引】复选框。在【数据库文件】列表中包括两行,一行是数据库文件,而另一行是日记文件。通过单击下面的【添加】、【删除】按钮添加或删除数据库文件。切换到【选项页】、在这里可以设置数据库的排序规则、恢复模式、兼容级别和其他属性。切换到【文件组】页,在这里可以添加或删除文件组。完成以上操作后,单击【确定】按钮关闭【新建数据库】对话框。至此“新建的数据”数据库创建成功。新建的数据库可以再【对象资源管理器】窗口看到。
java中怎样实现多线程执行的结果相加
import java.util.concurrent.BrokenBarrierException;import java.util.concurrent.CyclicBarrier;/**单独的计算线程,比如计算{1...10}的相加@author zhaohb*/public class CounterThread extends Thread{private int start;private int end;private CyclicBarrier barrier ;public CounterThread(int id,int start, int end,CyclicBarrier barrier) {this.start = start;this.end = end;this.barrier = barrier;setName("Thread-"+id+" ");}@Overridepublic void run() {int count = 0;for(int i=start;i《end+1;i++){count += i;}Counter.totalCount(count);try {barrier.await();} catch (InterruptedException e) {e.printStackTrace();} catch (BrokenBarrierException e) {e.printStackTrace();}}}import java.util.concurrent.CyclicBarrier;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;/**测试类入口@author zhaohb*/public class CounterTest {public static void main(String args) {//CyclicBarrier指定了当10个线程运行结束时候,可以进行最后结果展示了CyclicBarrier barrier = new CyclicBarrier(10,new TotalTask(new Counter()));ExecutorService executorService = Executors.newCachedThreadPool();for(int i=0;i《10;i++){int start = i*10+1;int end = start + 9;CounterThread counterThread = new CounterThread(i,start, end,barrier);executorService.execute(counterThread);}executorService.shutdown();}}/**线程结果计算:将单独的线程的计算的结果相加,汇总的到总的结果@author zhaohb**/class Counter {private static int count =0;public synchronized static int totalCount(int perCount){count += perCount;return count;}public int totalResult(){return count;}}/**最后结算展示线程@author zhb**/class TotalTask implements Runnable{private Counter counter ;public TotalTask(Counter counter){this.counter = counter;}@Overridepublic void run() {System.out.println("所有线程运行完毕,总结果为:");int total = counter.totalResult();System.out.println(total);}}
更多文章:
联想ideapad y450(联想ideapady450当年多少钱)
2024年7月21日 01:16
thinkpad x390(thinkpad x390笔记本参数)
2024年7月15日 20:24