文章目录
线程的四种基本状态
线程休眠(sleep方法)
/**
* Thread.sleep
* 使线程休眠
* 必须进行异常处理
*/
/******************sleep方法**************************/
public class SleepThread extends Thread{
@Override
public void run() {
for (int i = 0; i < 10; i++) {
System.out.println(Thread.currentThread().getName() + "------" + i);
try {
Thread.sleep(1000);//1000为一秒
}catch(InterruptedException e){
e.printStackTrace();
}
}
}
}
/****************实现类***************************/
public static void main(String[] args) {
SleepThread s1 = new SleepThread();
SleepThread s2 = new SleepThread();
s1.start();
s2.start();
}
线程放弃(yield方法)
/**
* Thread.yield
* 当前线程主动放弃时间片 回到就绪状态 竞争下一次时间片
*/
/***********************yield方法**************************/
public class YieldThread extends Thread{
@Override
public void run() {
for (int i = 0; i < 10; i++) {
System.out.println(Thread.currentThread().getName() + "------" + i);
Thread.yield();
}
}
}
/**********************实现类*****************************/
public static void main(String[] args) {
YieldThread y1 = new YieldThread();
YieldThread y2 = new YieldThread();
y1.start();
y2.start();
}
线程加入(join方法)
/**
* 线程对象.join
* 在当前线程中加入另一个线程 等另一个线程执行完再执行当前线程
* 必须异常处理
*/
/*******************join方法***************************/
public class JoinThread extends Thread{
@Override
public void run() {
for (int i = 0; i < 10; i++) {
System.out.println(Thread.currentThread().getName() + "------" + i);
}
}
}
/********************实现类***************************/
public static void main(String[] args) {
JoinThread j1 = new JoinThread();
JoinThread j2 = new JoinThread();
j1.start();
j2.start();
//子线程1
try {
j1.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
//子线程2
try {
j2.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
//主线程
//两个子线程加塞到主线程中
for (int i = 0; i < 10; i++) {
System.out.println(Thread.currentThread().getName() + "------" + i);
}
}
线程优先级(setPriority方法)
/**
* 线程对象.setPriority
* 设置线程有限级 1级最低 10级最高 默认5级
*/
/********************setPriority方法**********************/
public class PriorityThread extends Thread{
@Override
public void run() {
for (int i = 0; i < 10; i++) {
System.out.println(Thread.currentThread().getName() + "------" + i);
}
}
}
/****************实现类***************************/
public static void main(String[] args) {
PriorityThread p1 = new PriorityThread();
PriorityThread p2 = new PriorityThread();
PriorityThread p3 = new PriorityThread();
p1.setPriority(1);