当前位置:七道奇文章资讯编程技术Java编程
日期:2011-03-22 16:14:00  来源:本站整理

JAVA技术专题综述之线程篇[Java编程]

赞助商链接



  本文“JAVA技术专题综述之线程篇[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

编写具有多线程本领的程序常常会用到的办法有:

run(),start(),wait(),notify(),notifyAll(),sleep(),yield(),join()

还有一个重要的关键字:synchronized

本文将对以上内容举行讲授.

一:run()和start()

示例1:

public class ThreadTest extends Thread
{
public void run()
{
for(int i=0;i<10;i++)
{
System.out.print(" " + i);
}
}
public static void main(String[] args)
{
new ThreadTest().start();
new ThreadTest().start();
}
}

这是个简单的多线程程序.run()和start()是大家都很熟习的两个办法.把但愿并行处理的代码都放在run()中;stat()用于自动调用run(),这是JAVA的内涵机制规定的.并且run()的拜候掌握符必须是public,返回值必须是void(这种说法不精确,run()没有返回值),run()不带参数.

这些规定想必大家都早已知道了,但你能否清楚为什么run办法必须声明成这样的情势?这触及到JAVA的办法覆盖和重载的规定.这些内容很重要,请读者参考相关资料.

二:关键字synchronized

有了synchronized关键字,多线程程序的运行后果将变得可以掌握.synchronized关键字用于保护同享数据.请大家注意"同享数据",你一定要分清哪些数据是同享数据,JAVA是面向对象的程序计划语言,所以初学者在编写多线程程序时,简单分不清哪些数据是同享数据.请看下面的例子:

示例2:

public class ThreadTest implements Runnable
{
public synchronized void run()
{
for(int i=0;i<10;i++)
{
System.out.print(" " + i);
}
}
public static void main(String[] args)
{
Runnable r1 = new ThreadTest();
Runnable r2 = new ThreadTest();
Thread t1 = new Thread(r1);
Thread t2 = new Thread(r2);
t1.start();
t2.start();
}
}

在这个程序中,run()被加上了synchronized关键字.在main办法中成立了两个线程.你大概会认为此程序的运行后果一定为:0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9.但你错了!这个程序中synchronized关键字保护的不是同享数据(其实在这个程序中synchronized关键字没有起到任何作用,此程序的运行后果是不可预先肯定的).这个程序中的t1,t2是两个对象(r1,r2)的线程.JAVA是面向对象的程序计划语言,差别的对象的数据是差别的,r1,r2有各自的run()办法,而synchronized使同一个对象的多个线程,在某个时刻只有此中的一个线程可以拜候这个对象的synchronized数据.每个对象都有一个"锁标志",当这个对象的一个线程拜候这个对象的某个synchronized数据时,这个对象的全部被synchronized修饰的数据将被上锁(因为"锁标志"被当前线程拿走了),只有当前线程拜候完它要拜候的synchronized数据时,当前线程才会释放"锁标志",这样同一个对象的别的线程才有机会拜候synchronized数据.

示例3:

public class ThreadTest implements Runnable
{
public synchronized void run()
{
for(int i=0;i<10;i++)
{
System.out.print(" " + i);
}
}
public static void main(String[] args)
{
Runnable r = new ThreadTest();
Thread t1 = new Thread(r);
Thread t2 = new Thread(r);
t1.start();
t2.start();
}
}


  以上是“JAVA技术专题综述之线程篇[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:

  • 利用Javascript实现网页水印(非图片水印)
  • Java开辟环境的搭建
  • Ubuntu java安装与配置
  • 办理Ubuntu 10.04 Firefox3.6 Java浏览器插件不工作的问
  • Ubuntu重装后Java环境的设置
  • Sun Java进入Ubuntu 10.10软件中央
  • Ubuntu 10.10配置Java开辟环境
  • 在Ubuntu 10.10中配置Java环境变量的办法
  • Ubuntu下Java环境的搭建
  • Ubuntu 10.04 下安装 Java, JRE
  • Ubuntu 10.04下的搭建SUN JAVA开辟环境
  • Ubuntu 12.04安装java7
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .