首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

java线程知识自小弟我总结(二)

2012-12-28 
java线程知识自我总结(二)接java线程知识自我总结(一)??jion()方法??当前线程调用了jion方法后,就会是主线

java线程知识自我总结(二)

接java线程知识自我总结(一)

?

?

jion()方法

?

?

当前线程调用了jion方法后,就会是主线程暂停执行,直到当前线程结束后,主线程才能继续执行。

当主线程需要得到子线程操作后的数据时,子线程需要调用jion方法,否则主线程取到的值很可能是一个不确定值。

join方法的功能就是使异步执行的线程变成同步执行。

也就是说,A线程和B线程中,在B线程中调用了A.jion(),B线程将会被挂起,等到A线程执行完毕之后才有机会获得执行的机会。

?

?

//使用同步方法是的线程变得安全package com.link.volatil;public class Test1 extends Thread {volatile static int n = 0;static synchronized void inc() {n++;}public void run() {for (int i = 0; i < 100; i++)try {inc();sleep(3); // 使运行结果更加随机} catch (Exception e) {}}public static int getN() {return n;}public static void setN(int n) {Test1.n = n;}public static void main(String[] args) {Test1[] t = new Test1[100];for (int i = 0; i < t.length; i++) {t[i] = new Test1();}for (int i = 0; i < t.length; i++) {t[i].start();}for (int i = 0; i < t.length; i++) {try {t[i].join();} catch (InterruptedException e) {e.printStackTrace();}}System.out.println(n);}}
?

上面的程序把“三部曲”变成了“一部曲”,使得多个线程不可能读到同样的值,避免了过期数据的产生,使程序变得更加安全。最后程序的输出结果肯定是10000。

?

?

热点排行