JavaSE复习之十二 高级特性:并发

来源:互联网 发布:哪个国家的域名免费 编辑:程序博客网 时间:2024/06/05 02:21
并发



一、概念
1. 线程和进程的概念
线程:进程中的一个执行流程,线程属于某个进程,进程中的多个线程共享进程的内存。
进程:内存中运行的应用程序,每个进程独享一片内存空间,一个进程可启动多个线程。

        一个java应用总是从main()方法开始运行,main()方法运行在一个线程内,被称为主线程。一旦创建一个新的线程,就产生一个
新的调用栈。线程分为两类:用户线程和守候线程。


2. 创建线程的途径
a. 继承Thread类;重写run()方法;
b. 实现Runnable接口,写run()方法;


3. 线程的暂时停止
        利用Thread类的sleep()方法可暂时停止线程的执行操作。若要唤醒被Thread.sleep()暂停的线程,则可利用interrupt()方法。


4. 线程的共享和互斥
        1) synchronized
        当某方法加上synchronized声明后,就可以让一个线程操作这个方法(同步方法的概念,即:每次只有一个线程可以执行该
方法)。而非synchronized就可同时供多个线程一起执行该方法。
        一旦一个线程执行synchronized方法就获得一把锁,可防止其他线程进入;当执行结束,锁被释放。其他的线程就可以抢夺锁。
最后,只有一个线程可以得到锁。其他没有得到锁的线程就要等待,得到锁的线程执行同步方法。

        2) synchronized阻挡:
        若只想启动方法里一部分的线程,而非整个方法。则可使用synchronized阻挡,代码:
synchronized (表达式){    //}

5. 线程的不同状态
1) 新建状态(new):用new语句创建,仅是在堆区中分配了内存;
2) 就绪状态(Runnable):其start()方法被调用后,JVM为其创建方法栈,程序计数器;
3) 运行状态(Running):占用CPU,执行程序代码;
4) 阻塞状态(Blocked):线程暂时停止运行;
5) 死亡状态(Dead):线程退出Run()方法,进入死亡状态;


6. 线程的常用方法
notify()       // 唤醒单个线程;notifyAll()    // 唤醒等待的所有线程;wait()         // 线程等待的方法;join()         // 等待该线程终止;yield()        // 暂停当前正在执行的线程对象,并执行其他线程 


二、特性




三、应用




















修订:


参考:


注:

0 0
原创粉丝点击