3种优先级
public static final int MIN_PRIORITY ->1 public static final int NORM_PRIORITY ->5 public static final int MAX_PRIORITY ->10继承Thread类
class Mythread extends Thread{ 属性...; 方法...; public void run(){//覆写Thread 的run()方法,线程的主体 } } 实例化 Mythread m1=new MyThread(“thread A”);m1.start();//run方法调用没有启动线程.一个类只能继承Thread类才能实现多线程,必定受到单继承局限的影响。一般实现多线程,需要通过Runnable接口完成。Runnable 接口
class MyThread implements Runnable{ 属性...; 方法...; public void run(){//覆写Thread 的run()方法,线程的主体 } } * MyThread m1 =new MyThread("thread A"); * MyThread m2 =new MyThread("thread B"); * Thread t1=new Thread(m1); * Thread t2=new Thread(m2); * t1.start(); * t2.start();Runnale接口和Thread类
之间的联系
public class Thread extends Object implements Runnable Thread类也是Runnable接口的子类之间的区别 如果一个类继承Thread类,则不适合于多个线程共享资源。实现Runnable接口,就可以方便地实现资源的共享。Runnbale接口相对于Thread类,优势: 适合多个相同的代码的线程,处理同一个资源的情况。可以避免Java单继承带来的局限增强程序的健壮性,代码能够被多个线程共享,代码与数据是独立的。使用Runnable实现多线程。线程的状态 创建状态:有相应内存空间和其他资源,Thread thread =new Thread();就绪状态:start()启动线程,启动时候就进入就绪状态。运行状态:就绪被调用,获得处理器资源的时候,进去运行状态。自动调用run()方法。堵塞状态:正在执行,某种原因被挂起,CPU暂停终止。sleep(),suspend(),wait()线程进入堵塞的状态。死亡状态:stop()或者run()执行完成。至少启动两个线程,main和垃圾回收同步代码块
synchronized(同步对象){ 需要同步的代码; } synchronized(this){}同步方法
sychronized 返回值 方法名称(参数列表){ } 方法的完整格式 public final static sychronzed void fun(int i) throws Exception1,Exception2Object 类对线程的支持—-等待于唤醒
作为所有类的父类,这几种方法对线程支持
public final void wait()throws InterruptedException//等待线程 public final void wait(long timeout)throws InterruptedException public final void notify()//换新第一个等待的线程 public final void nootifyAll()//唤醒所有的线程 线程的生命周期 suspend():暂时挂起线程。resume():恢复挂起的线程stop():停止线程都是用了@Deprecated声明,表示不建议使用。