线程1-线程常用方法

1、线程方法
1)、start(),启动线程,并进入就绪状态,随时等待执行
2)、run(),重写的方法,开始执行线程
3)、currentThread(),调用当前线程
4)、getName(),获取线程名字
5)、setName(),设置线程名字
6)、yield(),调用此方法的线程,释放当前cpu的执行权,cpu执行别的线程,对象锁会不会释放
7)、join(),在A线程中调用B线程的join方法,A线程暂停执行,执行B线程,直至B线程执行完成,
A线程接着join()方法之后的代码继续执行。
8)、isAlive(),线程是否存活
9)、sleep(l),让当前线程睡眠l毫秒。
10)、wait(),notify(),notifyAll()

package com.thread.test;

class Thread1 extends Thread{
    @Override
    public void run(){
        Thread.currentThread();
        System.out.println(Thread.currentThread().getName());
        for(int i = 1; i <=100 ; i++){
        System.out.println(Thread.currentThread().getName()+"===="+i);
        }
    }
}

/**
 * 线程的主要方法
 *    1、start(),启动线程,并进入就绪状态,随时等待执行
 *    2、run(),重写的方法,开始执行线程
 *    3、currentThread(),调用当前线程
 *    4、getName(),获取线程名字
 *    5、setName(),设置线程名字
 *    6、yield(),调用此方法的线程,释放当前cpu的执行权,cpu执行别的线程,对象锁会不会释放
 *    7、join(),在A线程中调用B线程的join方法,A线程暂停执行,执行B线程,直至B线程执行完成,
 *        A线程接着join()方法之后的代码继续执行。
 *    8、isAlive(),线程是否存活
 *    9、sleep(l),让当前线程睡眠l毫秒。
 */

public class TestThread{
    public static void main(String[] args) {
        Thread.currentThread().setName("主线程");
        Thread1 t1 = new Thread1();
        t1.setName("子线程1");
        t1.start();
        
        for(int i = 1 ; i<= 100 ; i++){
            System.out.println(Thread.currentThread().getName()+"......"+i);
            if(i % 10 == 0){
                Thread.currentThread();
                Thread.yield();//释放当前cpu
            }
            if(i == 20){
                Thread1 t2 = new Thread1();
                t2.setName("子线程2");
                try {
                    t2.join();
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}

2、线程优先级
线程调度
(1)时间片策略,同优先级线程,组成先进先出队列,使用时间片策略
(2)抢占式策略,优先级高的先执行

原文地址:https://www.cnblogs.com/fubaizhaizhuren/p/Thread.html