Thread 方法(菜鸟教程)
下表列出了Thread类的一些重要方法:
序号 | 方法描述 |
---|---|
1 | public void start() 使该线程开始执行;Java 虚拟机调用该线程的 run 方法。 |
2 | public void run() 如果该线程是使用独立的 Runnable 运行对象构造的,则调用该 Runnable 对象的 run 方法;否则,该方法不执行任何操作并返回。 |
3 | public final void setName(String name) 改变线程名称,使之与参数 name 相同。 |
4 | public final void setPriority(int priority) 更改线程的优先级。 |
5 | public final void setDaemon(boolean on) 将该线程标记为守护线程或用户线程。 |
6 | public final void join(long millisec) 等待该线程终止的时间最长为 millis 毫秒。 |
7 | public void interrupt() 中断线程。 |
8 | public final boolean isAlive() 测试线程是否处于活动状态。 |
测试线程是否处于活动状态。 上述方法是被Thread对象调用的。下面的方法是Thread类的静态方法。
序号 | 方法描述 |
---|---|
1 | public static void yield() 暂停当前正在执行的线程对象,并执行其他线程。 |
2 | public static void sleep(long millisec) 在指定的毫秒数内让当前正在执行的线程休眠(暂停执行),此操作受到系统计时器和调度程序精度和准确性的影响。 |
3 | public static boolean holdsLock(Object x) 当且仅当当前线程在指定的对象上保持监视器锁时,才返回 true。 |
4 | public static Thread currentThread() 返回对当前正在执行的线程对象的引用。 |
5 | public static void dumpStack() 将当前线程的堆栈跟踪打印至标准错误流。 |
一、多线程-继承
package com.etc._01CreateThreadDemo;
class BoilWater extends Thread{//烧水类
@Override
public void run() {
// TODO Auto-generated method stub
System.out.println("正在烧水....");
try {
Thread.sleep(10000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("烧水结束....");
}
}
class WashCup extends Thread{//洗杯子类
@Override
public void run() {
// TODO Auto-generated method stub
for(int i = 0;i<5;i++){
System.out.println("洗杯子第"+(i+1)+"个");
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
public class ExtendsDemo01 {
//主线程
public static void main(String[] args) {
BoilWater bw = new BoilWater();
bw.start();
WashCup wc = new WashCup();
wc.start();
//一定要调用start方法
}
}
二、接口实现
package 线程;
class toShow implements Runnable {
@Override
public void run() {
// TODO Auto-generated method stub
System.out.println("开始");
try {
Thread.sleep(8000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("结束");
}
}
class toWord implements Runnable {
@Override
public void run() {
// TODO Auto-generated method stub
System.out.println("一秒");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("六秒");
try {
Thread.sleep(6000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
public class Jiekou {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
toShow to1 = new toShow();
Thread name1 = new Thread(to1);
name1.start();
toWord to2 = new toWord();
Thread name2 = new Thread(to2);
name2.start();
}
}
三、多线程(匿名内部类)
package com.etc._01CreateThreadDemo;
/**
* 匿名内部类实现多线程
*
* 一般是这个类只使用一次
* @author Administrator
*
*/
public class InnerClassThreadDemo {
public static void main(String[] args) throws InterruptedException {
for(int i = 0;i<500;i++){
System.out.println("打游戏"+i);
Thread.sleep(500);
if(i == 2){
//创建新的线程 启动线程
// new Thread(new Runnable() {
//
// @Override
// public void run() {
// // TODO Auto-generated method stub
// for(int j = 0;j<500;j++){
// System.out.println("听音乐"+j);
// try {
// Thread.sleep(500);
// } catch (InterruptedException e) {
// // TODO Auto-generated catch block
// e.printStackTrace();
// }
// }
//
// }
// }).start();
new Thread(){
@Override
public void run() {
// TODO Auto-generated method stub
//super.run();
for(int j = 0;j<500;j++){
System.out.println("听音乐"+j);
try {
Thread.sleep(500);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}.start();
}
}
}
}