当前位置:编程学习 > 网站相关 >>

多线程调用与中断过程研究

一直以来,对多线程的理解都仅限书本知识,没有仔细研究过,这次做了个实验,对多线程有了一定的了解。下面是实验代码与结果。
[html]  
public class MyRunTest   implements Runnable {  
  
    private int ticket=5;//类的成员变量放在栈里面,因为只new了一个对象,所以三个线程共同操作这个变量。  
      
    @Override  
    public  void run() {  
        for(int i=1;i<8;i++){ //因为run方法是线程体,i是每个线程所独立的栈保存,当CPU把当前线程中断,调用其他线程时,会保存当前线程的信息,等待下次调用时,继续执行。  
            System.out.println("线程"+Thread.currentThread().getId()+"被调用");  
            if(this.ticket>0){    
                System.out.println("线程"+Thread.currentThread().getId()+"准备减票数");  
                System.out.println("线程"+Thread.currentThread().getId()+"卖出:ticket "+ticket--);    
            } else{  
            System.out.println("线程"+Thread.currentThread().getId()+":卖完了"+i );  
            }  
            System.out.println("线程"+Thread.currentThread().getId()+"运行完"+i+"次"+"   打算睡觉!");  
            try {  
                Thread.sleep(1000);  
                System.out.println("线程"+Thread.currentThread().getId()+"睡醒,等待调用!");  
            } catch (InterruptedException e) {  
                e.printStackTrace();  
            }  
         }  
  
  }  
    /**  
     * @param args  
     */  
    public static void main(String[] args) {  
        MyRunTest   mt=new MyRunTest  ();  
        new Thread(mt).start();  
        new Thread(mt).start();  
        new Thread(mt).start();  
  
    }  
  
  
}  
 
 
 
结果是:
线程8被调用
线程9被调用
线程9准备减票数
线程9卖出:ticket 5
线程9运行完1次   打算睡觉!
线程8准备减票数
线程8卖出:ticket 4
线程8运行完1次   打算睡觉!
线程10被调用
线程10准备减票数
线程10卖出:ticket 3
线程10运行完1次   打算睡觉!
线程9睡醒,等待调用!
线程10睡醒,等待调用!
线程10被调用
线程10准备减票数
线程8睡醒,等待调用!
线程10卖出:ticket 2
线程9被调用
线程10运行完2次   打算睡觉!
线程8被调用
线程9准备减票数
线程8准备减票数
线程9卖出:ticket 1
线程8卖出:ticket 0
线程9运行完2次   打算睡觉!
线程8运行完2次   打算睡觉!
线程10睡醒,等待调用!
线程10被调用
线程10:卖完了3
线程10运行完3次   打算睡觉!
线程8睡醒,等待调用!
线程8被调用
线程8:卖完了3
线程8运行完3次   打算睡觉!
线程9睡醒,等待调用!
线程9被调用
线程9:卖完了3
线程9运行完3次   打算睡觉!
线程9睡醒,等待调用!
线程10睡醒,等待调用!
线程10被调用
线程10:卖完了4
线程8睡醒,等待调用!
线程10运行完4次   打算睡觉!
线程9被调用
线程8被调用
线程9:卖完了4
线程8:卖完了4
线程9运行完4次   打算睡觉!
线程8运行完4次   打算睡觉!
线程9睡醒,等待调用!
线程9被调用
线程9:卖完了5
线程9运行完5次   打算睡觉!
线程8睡醒,等待调用!
线程8被调用
线程8:卖完了5
线程8运行完5次   打算睡觉!
线程10睡醒,等待调用!
线程10被调用
线程10:卖完了5
线程10运行完5次   打算睡觉!
线程8睡醒,等待调用!
线程8被调用
线程8:卖完了6
线程10睡醒,等待调用!
线程9睡醒,等待调用!
线程10被调用
线程8运行完6次   打算睡觉!
线程10:卖完了6
线程9被调用
线程10运行完6次   打算睡觉!
线程9:卖完了6
线程9运行完6次   打算睡觉!
线程8睡醒,等待调用!
线程8被调用
线程9睡醒,等待调用!
线程9被调用
线程9:卖完了7
线程9运行完7次   打算睡觉!
线程8:卖完了7
线程8运行完7次   打算睡觉!
线程10睡醒,等待调用!
线程10被调用
线程10:卖完了7
线程10运行完7次   打算睡觉!
线程8睡醒,等待调用!
线程10睡醒,等待调用!
线程9睡醒,等待调用!
补充:综合编程 , 其他综合 ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,