栏目分类:
子分类:
返回
终身学习网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
终身学习网 > IT > 软件开发 > 后端开发 > Java

Java多线程学习

Java 更新时间:发布时间: 百科书网 趣学号
Java多线程学习 sleep方法

Thread中的静态方法直接用Thread.sleep()调用,参数为睡眠的时间,功能是让当前线程进入睡眠。

yield方法

Thread中的静态方法,可以暂停当前线程对象,使相同优先级的线程执行,若不存在相同优先级的线程,则当前被暂停的线程执行,此方法区别于sleep方法,此方法中CPU不会暂停一直在工作,但是sleep方法中可能出现浪费CPU时间的情况。

join方法

是将当前线程加入到调用join方法线程的尾部也就是等待调用该方法线程死亡当前线程才会开始执行;此外可以在join()中加参数表示等待调用该方法死亡时间做多为多少毫秒。

wait方法和notify方法

wait方法是使线程进入等待状态只到被notify方法或notifyAll方法唤醒,notify方法是唤醒另一等待线程(是由调度器决定的),而notifyAll方法是唤醒所有等待该资源的线程。wait方法中可以加入等待时间,到了等待时间线程也会自动苏醒。区别于sleep,sleep是Thread中的静态方法而wait是Object类中的实体方法。

synchronized(锁机制)

加了该关键字的方法,当在一个线程执行此方法,另一个线程也想执行此方法就会被锁机制拒绝只有当正在调用此方法的线程结束之后这个锁才会打开也就是被下一个线程调用,这也避免了多个线程同时对一个数据资源进行操作会出现数据脏读,重复读等现象。

使用方式

用在方法上:public synchronized T m1(){}

public synchronized void produce() {
    while (num >= max) {
        try {
            this.wait();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
    num++;
    System.out.println(Thread.currentThread().getName()+"----->生产 "+num);
    this.notifyAll();
}

用在方法内:synchronized(参数) {
java语句
}

public void produce() {
    synchronized {
    while (num >= max) {
        try {
            this.wait();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
    num++;
    System.out.println(Thread.currentThread().getName()+"----->生产 "+num);
    this.notifyAll();
    }
}
转载请注明:文章转载自 www.051e.com
本文地址:http://www.051e.com/it/956712.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 ©2023-2025 051e.com

ICP备案号:京ICP备12030808号