多线程:
package com.wode;
/**
*
* @author Administrator
*多线程
*/
public class Test04_18 {
public static void main(String[] args) {
//多线程:一个进程用多个线程 线程是最小运行单位,进程可以包含多个线程
//多个线程可以一起执行
ThreadClass t1 = new ThreadClass();
new Thread(t1).start();//start() 方法让线程执行
ThreadClass2 t2 = new ThreadClass2();
new Thread(t2).start();
//---------------------------------华丽丽的分割线--------------------------------------------------------
//线程中涉及到一个 精灵线程也叫后台线程或者叫守护线程 三者指的的都是一个意思
// Java 迚程的结束:当前所有前台线程都结束时, Java 冲程结束
// 当前台线程结束时, 不管后台线程是否结束, 都要被停掉!
Thread1 t3 = new Thread1();
t3.setDaemon(true);//使用setDaemon(true);方法 让t3 成为精灵线程
t3.start();
//如果t1执行完毕那么t3不管是否结束 都要停止运行
//---------------------------------华丽丽的分割线--------------------------------------------------------
//线程的同步和异步 同步:步调一致的处理 就像人排队上公交车车一样 只有前面的人上去了 后面的人才能上
//异步: 就像一群一起上食堂一样 大家都可以进去 没有必要等前面的人 进去了以后再进去
//同步的关键字: synchronized
//synchronized 修饰法 详细参考火车买票
//最后 Object 中使用wait();方法将让线程进入等待状态 如果不通过notify();将线程唤醒 那么次线程将永远不会醒来
}
}
package com.wode;
/**
*
* @author Administrator
*创建一个线程
*/
public class ThreadClass implements Runnable{
/*在程序开发中只要是多线程肯定永远以实现Runnable接口为主,因为实现Runnable接口相比
继承Thread类有如下好处:
->避免单继承的局限,一个类可以继承多个接口。
->适合于资源的共享*/
// 实现了Runnable接口 一定要实现他的run方法
@Override//重新run 一般执行线程 都把代码写在run方法里面
public void run() {
for (int i = 0; i <10; i++) {
System.out.println("A线程执行了"+i);
// try {
// //使用sleep 方法使线程 休眠()里是多少毫秒以后再执行
// Thread.sleep(1000);
// } catch (InterruptedException e) {
// // TODO Auto-generated catch block
// e.printStackTrace();
// }
}
}
}
package com.wode;
/**
*
* @author Administrator
*创建第二个线程
*/
public class ThreadClass2 implements Runnable{
@Override
public void run() {
for (int i = 0; i <50; i++) {
//Thread.currentThread().setPriority(1);
//currentThread() 为当前线程的意思 而setPriority 是设置线程的优先级 在资源紧张的时候 会优先执行优先级高的线程
//线程的优先级 1为最低 10为最高 默认为5
System.out.println("B线程执行了"+i);
//Thread.yield();//使用yield 让出CPU 的控制权
}
}
}
package com.wode;
/**
*
* @author Administrator
*建立第三个线程
*/
public class Thread1 extends Thread{//继承了Thread父类
@Override
public void run() {//重写 run方法
for (int i = 0; i <50; i++) {
System.out.println("C线程执行了"+i);
}
}
}