java 线程实列

 

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个线程运行时打印了10次1。下面10个线程对象产生的10个线程运行时打印了1到10。我们把下面的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,就可以让在同一时间只有一个线程操作该方法.

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值