码迷,mamicode.com
首页 > 编程语言 > 详细

Java基础-线程

时间:2016-05-11 21:49:37      阅读:201      评论:0      收藏:0      [点我收藏+]

标签:

 

 

/**
 * 程序是静态的数据 进程是动态的程序 线程是进程中的一个连续的控制流 
 * 程序:Code+Data 
 * 进程:程序+CPU
 * 线程:创建+就绪+运行+阻塞+销毁
 * 
 * 2种生成线程类的方法 
 * 继承:java.lang.Thread+对象.start();
 * 实现:java.lang.Runnable+借助Thread类对象.start(); 
 * 2种方式都要重写run()
 * 
 * 常用方法 
 * sleep(long time); 
 * 主动休眠 yield(); 
 * 主动让出CPU join(); 立即进入执行状态
 * getName();setName();isAlive();currentThread();
 * 
 * 线程的优先级:1-10 默认5 10最高
 * 
 * 线程的同步 多个线程访问(操作)同一个资源,即发生了并发现象 为了确保共享资源合理有序的利用,而创建了同步机制
 * 实现同步:通过主要关键字synchronize和wait、notify等的配合 
 * wait():让当前线程对象进入等待状态
 * notify():让当前线程对象发出一个唤醒信号,让等待者醒来
 * 
 */
class Student extends Thread {
    private int score;

    @Override
    public synchronized void run() {
        try {
            System.out.println(this.getName() + "开始考试...");
            Thread.sleep(3000);
            System.out.println("考试结束,开始阅卷");
            Thread.sleep(3000);
            score = (int) (Math.random() * 101);
            System.out.println("阅卷结束,现在可以查询成绩了");
            this.notify();
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

    public synchronized int getScore() {
        System.out.println(Thread.currentThread().getName() + "正在考试和阅卷,请稍等");
        try {
            this.wait();
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return score;
    }
}

public class ThreadTest {

    public static void main(String[] args) {
        Student student = new Student();
        System.out.println("同学你考试能考多少分?");
        System.out.println("给我点时间,我去考试,看看");
        student.start();
        System.out.println("查询学生考试成绩:" + student.getScore());
    }

}

 

Java基础-线程

标签:

原文地址:http://www.cnblogs.com/qixiawentang/p/5483305.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!