线程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)抢占式策略,优先级高的先执行