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

线程....

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

线程....


线程方法
线程等待(wait) 调用该方法的线程进入 waiting状态,只有等待另外线程的通知或被中断才会返回,需要注意的是调用 wait()方法后,会释放对象 的锁。因此,wait 方 法一般用在同步方法或同步代码块中。

线程睡眠(sleep) sleep 导致当前线程休眠,与 wait 方法不同的是 sleep 不会释放当前占 有的锁,sleep(long)会导致线程进入 TIMED-WATING 状态,而 wait()方法 会导致当前线程进入 WATING 状态.

线程让步(yield) yield 会使当前线程让出 CPU 执行时间片,与其他线程一起重新竞争 CPU 时间片。一般情况下,优先级高的线程有更大的可能性成功竞争得到 CPU 时间片,但这又不是绝对的,有的操作系统对 线程优先级并不敏感。

Join 等待其他线程终止,如果一个线程A执行了 threadB.join() 语句,其含义是:当前线程A等待 threadB 线程终止之后才从 threadB.join() 返回继续往下执行自己的代码(这就形成阻塞)

线程中断(interrupt) 中断一个线程,其本意是给这个线程一个通知信号,会影响这个线程内部的 一个中断标识位。这个线程本身并不会因此而改变状态(如阻塞,终止等)

线程唤醒(notify和notifyAll),notifyAll()会唤醒所有的线程,notify()之后唤醒一个线程。notifyAll() 调用后,会将全部线程由等待池移到锁池,然后参与锁的竞争,竞争成功则继续执行,如果不成功则留在锁池等待锁被释放后再次参与竞争。而 notify()只会唤醒一个线程,具体唤醒哪一个线程由虚拟机控制。

注意wait和sleep:

  1. wait():来自 Object 类; sleep():来自 Thread 类;
  2. wait():在等待的过程中会释放锁; sleep():在等待的过程中不会释放锁
  3. wait():在等待的过程中会释放锁; sleep():在等待的过程中不会释放锁

并发和并行
并发:在一个时间段,将时间段切成n份,每份为一个线程,,再该时间段完成所有线程
并行:在一个时间段,有n个线程同时进行。

创建线程有三种方式
1、xxxThread继承 Thread 重写 run 方法;
启动线程:new xxxThread().start();
2、xxxThread实现 Runnable 接口;
启动线程:newThread(new xxxThread()).start();
3、实现 Callable 接口
启动线程:newThread(new xxxThread()).start();

线程的 run() 和 start() 有什么区别
1、run()是重写方法,start()不是重写方法
2、start()是启动线程,run()是线程运行时所执行的代码块
3、start()只能调用一次,run()可以重复调用

转载请注明:文章转载自 www.wk8.com.cn
本文地址:https://www.wk8.com.cn/it/1040274.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 wk8.com.cn

ICP备案号:晋ICP备2021003244-6号