线程基础

 

1.线程是一个程序内部不同的执行路径。

2.main()为主线程。

3.进程是一个静态概念,实际运行的是线程。

4.同一个时间点只能执行一个线程,时间片的分割短。

5.创建新线程的两种方式:

(1)第一种:实现Runnable接口

     A:声明实现Runnable接口的类,然后实现run()方法。

     B:然后可以分配该类的实例,在创建 Thread 时作为一个参数来传递并启动。

     C:Thread th=new Thread(实现Runnable接口类的实例)。

     D:Runnbale接口只有一个run()方法,用来定义线程的运行体。

voidrun()
          使用实现接口 Runnable 的对象创建一个线程时,启动该线程将导致在独立执行的线程中调用对象的 run 方法。

     E:使用该方法可以为多线程提供共享的数据。

     F:在该实现方法中,在run()方法中可以使用Thread的静态方法。

     G:

 void

start()
          使该线程开始执行;Java 虚拟机调用该线程的 run 方法。

代码如下:

public class TestThread1 {

 
 public static void main(String[] args) {

  //实例化实现Runnable接口的类
  TestRunner1 tr=new TestRunner1();
 // tr.run();
  //创建一个线程
  Thread myThread=new Thread(tr);
  //启动线程执行,调用线程的run()方法
  myThread.start();
  
  for(int i=0;i<50;i++){
   System.out.println("main thread:"+i);
  }
 }

}

 class TestRunner1 implements Runnable{
 public void run(){
  for(int i=0;i<50;i++){
   System.out.println("child Runnable1:"+i);
  }
 }
}

从结果可以看出,是交替执行的。

 

 

注意:

如果只是 TestRunner1 tr=new TestRunner1();
                   tr.run();

而不是 创建Thread,

则只是单纯的方法调用,达不到多线程的目的。

(2)第二种方式:继承Thread

     A:类声明为 Thread 的子类。

     B:该子类应重写 Thread 类的 run 方法。

     C:接下来可以分配并启动该子类的实例。

代码如下:

public class TestThread2 {

 public static void main(String[] args) {
 
  Test myThread=new Test();
  myThread.start();
  
  for(int i=0;i<50;i++){
   System.out.println("main thread:"+i);
  }

 }

}

class Test extends Thread{
 public void run(){
  for(int i=0;i<50;i++){
   System.out.println("child thread:"+i);
  }
 }
}

 

由于类的单继承模式,所以推荐实现接口这种方式。

 

 

6.线程状态

创建----就绪(start)------运行---终止

创建----就绪----运行---阻塞---就绪--运行--终止

 

控制方法如下:

static voidsleep(long millis) throws InterruptedException
          在指定的毫秒数内让当前正在执行的线程休眠(暂停执行),此操作受到系统计时器和调度程序精度和准确性的影响。

InterruptedException - 如果任何线程中断了当前线程。当抛出该异常时,当前线程的 中断状态 被清除。

 voidjoin() throws InterruptedException
          等待该线程终止。

相当于方法调用。

static voidyield()
          暂停当前正在执行的线程对象,并执行其他线程。

  让出CPU,让其他线程执行。

 

7.线程优先级

范围:1--10,默认为5.

java.lang.Thread
public static final intMAX_PRIORITY10
public static final intMIN_PRIORITY1
public static final intNORM_PRIORITY5

Thread的字段摘要

字段摘要
static intMAX_PRIORITY
          线程可以具有的最高优先级。
static intMIN_PRIORITY
          线程可以具有的最低优先级。
static intNORM_PRIORITY
          分配给线程的默认优先级。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值