Thread(多线程类)
多线程
-
进程: 通俗的来说,每一个程序都是一个进程,比如:QQ,360,谷歌。
-
线程: 每一个程序中都有多个功能,每一个功能都可以看成是一个线程。
Thread的使用
- 继承子类建立线程
对于每一个线程,都是可以通过类继承Thread来完成的。
ublic class Thread_one {
public static void main(String[] args) {
Ter it = new Ter();
//start开始运行线程中的方法
it.start();
}
}
class Ter extends Thread{
@Override
//run方法里面的方法是线程的主方法
public void run() {
for (int i = 0; i <100; i++) {
if(i%2==0){
System.out.println(i);
}
}
}
}
- 内部对象类
new Thread() {
@Override
public void run() {
System.out.println("牛逼");
}
}.start();
}
- 带参数的构造方法
class Ter extends Thread{
@Override
//run方法里面的方法是线程的主方法
public void run() {
for (int i = 0; i <100; i++) {
if(i%2==0){
System.out.println(i);
}
}
}
public
}
- 接口创建多线程
用类来继承runable继承,在主方法中创建runable继承的类的对,在用这对象作为参数,去实现thead类。
public class Thread_runable {
public static void main(String[] args) {
Mythread_runable w=new Mythread_runable();
Thread it1=new Thread(w);
Thread it2=new Thread(w);
Thread it3=new Thread(w);
it1.run();
it2.run();
it3.run();
}
}
class Mythread_runable implements Runnable{
int ticket=100;
@Override
public void run() {
while (true){
if(ticket>0){
System.out.println(Thread.currentThread().getName()+"卖出的车票"+ticket);
}else {
break;
}
ticket--;
}
}
}
用接口的方式建立买票窗口,可以满足只出现一个100的要求。
线程的命名
Thread currentThread();
返回当前线程,此方法为构造方法
void setName();
设置线程的名字
String getName();
返回当前线程的名字
设置线程运行的状态
- 睡眠(sleep)与中断(interrupt)
sleep让线程出于堵塞,不运行的状态。
- 等待(wait)和通知(notify)
- 等待线程(join)和谦让(yield)
join是将线程加入主方法,yield取消当前线程的执行权利。
对于join()加入的方法,主线程会行执行加入的方法,在执行,其他方法。
线程的调度
- 不同线程的优先级不同,对于优先级高的,会抢占低的资源,就会先运行。
-getpriority()与setpriority()