测试是我职业生涯中最喜欢的工作,也希望自己在这个空间里每天进步一点点,改善自己,提高自己。

lesson5-java

上一篇 / 下一篇  2008-06-23 22:02:58 / 个人分类:JAVA

第五课
进程和线程
lesson.java

class Threaddemo1
{
public static viod main(String [] args//main方法是在线程上进行的
    {
      new TestTread().run();
     while(true)
      {
         system.out.println("main()"+Thread.currentThread().getName());//thread类静态方法,
返回一个线程类的对象,得到这个线程的名称
       }
     }
}
class TestTread 
{
   public void run()
    {
     while (true)
       {
         system.out.println("run:"+Thread.currentThread().getName());//thread类静态方法,
返回一个线程类的对象,得到这个线程的名称
       }
     }
}

执行后,run方法是无限循环,所以main后面的代码没有执行,这是单线程的
如果想实现多线程
class Threaddemo1
{
public static viod main(String [] args//main方法是在线程上进行的
    {
      new Thread().start();启用一个线程,开始执行他的程序代码及run()程序中的代码,但是Thread中的run()方法是一个空的函数没有任何意义,所以要编写一个子类覆盖他的run()方法;
      new TestTread().start();//不同,调用Thread的start()方法启用线程开始执行他的程序代码;
     while(true)
      {
         system.out.println("main()"+Thread.currentThread().getName())//thread类静态方法,
返回一个线程类的对象,得到这个线程的名称
       }
     }
}
class TestTread  extend Thread//不同
{
   public void run()
    {
     while (true)
       {
         system.out.println("run:"+Thread.currentThread().getName())//thread类静态方法,
返回一个线程类的对象,得到这个线程的名称
       }
     }
}

二、用Thread类创建线程

*要将一段代码在一个新的线程上运行,该代码应该在一个类的run函数中,并且run函数所在的类是Thread类的子类,倒过来看,我们要实现多线程,必须编写一个继承了Tread类的子类,子类要覆盖Thread类中的run函数,在子类的run函数中调用想在新线程上运行的程序代码。

*启动一个新的线程,我们不是直接调用Thread的子类对象的run方法,而是调用Thread子类对象的start(从Thread类的继承到的)方法,Thread类对象的start方法将产生一个新的线程,并在该线程上运行该Thread类对象中的run方法,根据面向对象的运行时的多态性,在该线程上实际运行的是Thread子类(也就是我们写的那个类)对象的run方法

*由于线程的代码段在run方法中,那么该方法执行完成以后线程也就是相应的结束了,因而我们可以通过控制run方法中的循环的条件控制线程的结束。


三、后台线程和联合线程
*如果我们对某个线程对象在启用(调用start方法)之前调用了setDaemon(true)方法,这个线程就变成了后台线程
*对java程序来说,只要还有一个前台线程运行,这个进程就不会结束,如果一个进程中只有后台线程运行,这个进程就会结束。
*pp.join()的作用是吧pp所对应的线程合并到调用pp.jion();语句的线程中
后台例子:
class Threaddemo1
{
public static viod main(String [] args//main方法是在线程上进行的
    {
      Tread tt=new TestTread();
tt.setDaemon(true);
tt.start();
    
     }
}
class TestTread  extend Thread//不同
{
   public void run()
    {
     while (true)
       {
         system.out.println("run:"+Thread.currentThread().getName())//
       }
     }
}
联合例子:
class Threaddemo1
{
public static viod main(String [] args//main方法是在线程上进行的
    {
      Tread tt=new TestTread();

tt.start();
int index=0;
    
     }
}
class TestTread  extend Thread//不同
{
   public void run()
    {
     while (true)
       {
        if(index++==100)
         try{tt.join();}catch{Exception e}
         system.out.println("run:"+Thread.currentThread().getName())//
       }
     }
}


TAG: JAVA

 

评分:0

我来说两句

日历

« 2024-04-28  
 123456
78910111213
14151617181920
21222324252627
282930    

数据统计

  • 访问量: 15617
  • 日志数: 33
  • 图片数: 1
  • 建立时间: 2008-02-18
  • 更新时间: 2008-09-18

RSS订阅

Open Toolbar