黑马程序员--线程学习

 - <a href="http://www.itheima.com"target="blank">JAVA+android开发</a>、<a href="http://www.itheima.com"target="blank">JAVA培训</a>、期待与您交流! ----------------------

线程实列:

package debug;

import java.io.*;

import java.lang.Thread;

class MyThread extends Thread{

  public int x = 0;

  public void run(){

    System.out.println(++x);

  }

}

class R implements Runnable{

  private int x = 0;

  public void run(){

    System.out.println(++x);

  }

}

public class Test {

  public static void main(String[] args) throws Exception{

   

    for(int i=0;i<10;i++){

      Thread t = new MyThread();

      t.start();

    }

    Thread.sleep(10000);//让上面的线程运行完成

    R r = new R();

    for(int i=0;i<10;i++){

      Thread t = new Thread(r);

      t.start();

    }

  }

}

上面10个线程对象产生的10个线程运行时打印了101。下面10个线程对象产生的10个线程运行时打印了110。我们把下面的10个线程称为同一实例(Runnable实例)的多个线程。

 

1) start() run()

调用线程对象的run方法不会产生一个新的线程

 

2) interrupt() interrupted() isInterrupted()

interrupt() 设置线程的中断状态,而非实质的中断线程。

interrupted() 用来判断当前线是否被中断,而

isInterrupted() 可以用来判断其他线程是否被中断,方法则仅仅检查线程对象对应的线程是否是中断状态,并不改变它的状态。

 

3) sleep() join() yield()

sleep()是类方法,也就是对当前线程而言的,程序员不能指定某个线程去sleep,只能是当前线程执行到sleep()方法时,睡眠指定的时间(让其它线程运行). 注释:在同步方法中尽量不要调用线程的sleep()方法

join()等待调用线程的返回结果。是测试其它工作状态的唯一正确方法。

yield()是类方法,只在当前线程上调用,理由同上,它主是让当前线程放弃本次分配到的时间

 

4) wait() notify()/notifyAll()

wait() 将调用该方法的线程在休息室中等待。

notify()/notifyAll() 这两个方法都是把某个对象上休息区内的线程唤醒,notify只能唤醒一个,但究竟是哪一个不能确定,notifyAll则唤醒这个对象上的休息室中所有的线程.

 

5) isAlive()

当线程处于运行状态时,isAlive返回true,当isAlive返回false时,可能线程处于等待状态,也可能处于停止状态。

 

synchornized关键字

JAVA,synchornized关键字来实现互斥控制

把一个单元声明为synchornized,就可以让在同一时间只有一个线程操作该方法.

  - <a href="http://www.itheima.com"target="blank">JAVA+android开发</a>、<a href="http://www.itheima.com"target="blank">JAVA培训</a>、期待与您交流! ----------------------
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值