线程有关方法
  void start():启动线程,并执行对象的 run() 方法。
  run():线程在被调度时执行的方法体。
  String getName():返回线程的名称。
  void setName(String name):设置该线程的名称。
  static Thread currentThread():返回当前线程对象 。在 Thread 子类中就是 this ,通常用于主线程和 Runnable 实现类。

  static void yield():线程让步,释放当前CPU的执行权。下一刻可能又立马得到。暂停当前正在执行的线程,把执行机会让给优先级相同或更高的线程。若队列中没有同优先级的线程,忽略此方法。

  join():在线程A中调用线程B的join(),此时线程A就进入阻塞状态,直到线程B完全执行完以后,线程A才结束阻塞状态(相当于插队)。低优先级的线程也可以获得执行。

  static void sleep(long millis): 让当前线程睡眠指定毫秒数,在睡眠期间,当前线程是阻塞状态。不会释放锁。令当前活动线程在指定时间段内放弃对 CPU 控制,使其他线程有机会被执行,时间到后重排队。抛出 InterruptedException 异常。

  stop():强制线程生命期结束,不推荐使用。(已过时)。
  boolean isAlive():返回 boolean,判断线程是否还活着。

  代码示例:join() 使用

复制代码
1 public class Main {
2 public static void main(String[] args) throws InterruptedException {
3 MyThread myThread = new MyThread();
4 myThread.setName("线程一");
5 myThread.start();
6
7 Thread.currentThread().setName("主线程");
8 for (int i = 0; i < 100; i++) {
9 if (i % 2 == 0) {
10 System.out.println(Thread.currentThread().getName() + ":" + i);
11 }
12 // 主线程拿到CPU执行权到i=40时,会进入阻塞,等 线程一 执行完才结束
13 if (i == 40) {
14 myThread.join();
15 }
16 }
17 }
18 }
19
20 class MyThread extends Thread {
21
22 @Override
23 public void run() {
24 for (int i = 0; i < 100; i++) {
25 if (i % 2 == 0) {
26 System.out.println(Thread.currentThread().getName() + ":" + i);
27 }
28 }
29 }
30 }
复制代码
5、线程调度
  调度策略:时间片轮训;抢占式,高优先级的线程抢占CPU。

  Java 的调度方法:同优先级线程组成先进先出队列(先到先服务),使用时间片策略;对高优先级,使用优先调度的抢占式策略。


0n65ki4a
1 声望0 粉丝

下一篇 »
ACIT2420