
Thread: fuck u 和he交替输出


public class Mythread extends Thread{ //自定义线程类继承Thread类
@Override
public void run(){ //重写run方法
for(int i=0;i<100;i++){
System.out.println("fuck u");
}
}
Mythread t=new Mythread();
t.start(); //调用strat启动
for(int i=0;i<1000;i++){
System.out.println("he");
}
}
}
Runnable



public class Run implements Runnable{
@Override
public void run() {
}
public static void main(String[] args) {
Run r=new Run();
new Thread(r).start();
}
}
Callable接口:可以定义返回值;可以抛出异常


线程方法:

1000ms=1s
sleep()
可以模拟网络延迟,倒计时等
每一个对象都有一把锁,sleep不会释放锁
线程礼让:Thread.yield();
public class yield {
public static void main(String[] args) {
myyeild y=new myyeild();
new Thread(y,"a").start();
new Thread(y,"b").start();
}
static class myyeild implements Runnable{
@Override
public void run() {
System.out.println("start"+Thread.currentThread().getName());
Thread.yield();//礼让 System.out.println("end"+Thread.currentThread().getName());
}
}
}
线程停止
插队线程:Thread.join();

观测线程状态:
NEW:尚未启动的线程
RUNNABLE:在虚拟机中执行的线程处于这个状态
BLOCKED:被阻塞等待监视器锁定的线程
WAITING:正在等待另一个线程执行特定动作的线程
TIMED WAITING:正在等待另一个线程执行动作达到指定等待时间的线程
TERMINATED:已退出的线程
//观察状态
Thread.State state=thread.getState();
System.out.println(state);
线程优先级;
优先级用数字表示,范围1-10.
Thread.MIN_PRIORITY=1;
Thread.MAX_PRIORITY=10;
Thread.NORM_PRIORITY=5;
使用以下方式可以改变或获取优先级
getPriority().setPriority(int xxx)
先设置优先级再启动:
t1.setPriority(2);
t1.start();

线程通信
wait() 表示线程会一直等待,直到其他线程通知,与sleep不同,会释放锁
wait(long timeout) 指定等待的毫秒数
notify(唤醒一个处于等待状态的线程)
notifyAll() 唤醒同一个对象上所有调用wait()方法的线程,优先级高的线程优先调度
this.wait()
this.notifyAll()
线程池
可以避免频繁创建销毁,实现重复利用。
corePoolSize:核心池的大小
maximumPollSize:最大线程数
keepAliveTime:线程没有任务时最多保持多长时间后会终止
线程池:




浙公网安备 33010602011771号