Java学习之多线程

Posted on 2009-04-02 17:40  pual.k3  阅读(262)  评论(0)    收藏  举报

有以下三点体会:

  1. 进程是一个静态的概念;
  2. 线程是一个进程中不同的执行路径;
  3. 在同一个时间点上一个CPU只能支持一个线程在执行;
  4. 多核可以支持多线程。

Java通过Java.lang.Thread实现多线程,可以通过创建Thread对象的run()方法来实现,也可以通过使用start()来启动新线程。

通过run()有两种方法实现:

  1. 定义线程实现Runnable接口:

              Thread myThread=new Thread (target) //targer为runnable接口类型

         runnable中只有一个方法:

                  public void run();用以定义线程运行体;

          使用Runnable接口可以为多线程提供共享的数据

           在实现Runnable接口的类的run方法定义中可以使用Thread的静态方法‘

                   public static Thread currentThread() 获取当前线程的引用

   2. 可以定义一个Thread的子类并重写其run方法如:

                   class MyThread extends Thead{

                    public void run(){...}

                    }

然后生成该类的对象:

           MyThrea myThread = new MyThread(...)

 

3. sleep()方法 休眠

4. Jion()合并

5. yield() 暂停当前正在执行的线程对象,并执行其他线程,只让出一个时间片

6. 优先级:

public class TestPriotity {
 Thread t1 = new Thread(new T1());
 Thread t2 = new Thread(new T2());
 t1.setPriority(Thread.NORM_PRIORITY+3);
 t1.start();
 t2.start();
}
class T1 implements Runnable{
 public void run(){
  for(int i=0;i<=100;i++)
   System.out.println("T1:"+i);
 }
}
class T2 implements Runnable{
 public void run(){
  for(int j=0;j<100;j++)
   System.out.println("-----T2:"+j);
 }
}

输出结果是,t1输出一段后,开始输出t2,很快有继续输出t1.

6.一个进程启用多个线程:

public class TestThread2 {
 public static void main(String[] args){
  Runner2 r = new Runner2();
  Thread t1 = new Thread(r);
  Thread t2 = new Thread(r);
  t1.start();
  t2.start();
 }

}
class Runner2 implements Runnable{
 public void run(){
  for(int i=0;i<100;i++)
   System.out.println("NO.:"+i);
 }
}

博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3