通过Runnable接口实现多线程,此接口的定义为:
pulic interface Runnable{
public void run();
}
因此需要覆写run()方法:
class ThreadA implements Runnable{
public void run() {
for(int i=0;i<5;i++) {
System.out.print(i+Thread.currentThread().getName()+"\t");
}
System.out.println();
}
}
如果是直接继承Thread类实现多线程,那么启动线程时使用start()方法即可,通过Runnable接口还是需要依靠Thread类:
Thread类中提供了Thread(Runnable target)和public Thread(Runnable target,String name)两个构造方法,可以接收Runnable的子类实例对象
public static void main(String[] args) {
ThreadA task1=new ThreadA();
ThreadB task2=new ThreadB();
Thread t1=new Thread(task1);
Thread t2=new Thread(task2);
System.out.println(t1.isAlive());//判断线程是否已启动
t1.setDaemon(true);//t1将在后台运行,保证整个java进程不会消失
t2.setPriority(Thread.MAX_PRIORITY);//设置线程B的优先级最高,默认优先级是NORM
t1.start();
t2.start();
try {
t2.sleep(5000);//线程休眠5秒钟
t2.join();//强制执行一次线程2
System.out.print("强制执行了一次线程2\n");
}catch(Exception e){
System.out.println("catch exception!");
}
t1.interrupt();//中断线程执行
//t1.start();
System.out.println("主方法的优先级"+Thread.currentThread().getPriority());//getpriority方法获取主方法的优先级
}
补充部分线程操作方法:
两个构造方法,见上
public Thread(String name)//构造方法 public static Thread currentThread()//返回当前线程 public final String getName()//获取线程名称 public final int getPriority()//获取线程名称 public boolean isInterrupted()//判断线程是否中断 public final boolean isAlive()//判断线程是否还在活动
浙公网安备 33010602011771号