线程的调用必须使用Thread类中的start方法,实现Runnable接口
void{
Runner1 r = new Runner1();//一个线程对象
//Thread t = new Thread(r); //切成一个子线程;
//方法1存在,方法2不存在;这个为Runnable接口的子方法
t.start();}
class Runner1 implements Runnable{} //方法1;实现接口
class Runner1 extends Thread;(直接调用r.start)//方法2;继承
isAlive()判断现成是否还活着,是否终止
getPriority()获得线程的优先级数值
setPriority()设置线程的优先级..
...等等.
sleep方法throws InterruptedException
while(true){
System.out.println("==="+new Date()+"===");
try{sleep(1000);}catch(InterruptedException e){return;}
注意:重写的方法不能抛出继承父类的不同的异常,无法直接throws Exception.
以上的方法太过于简单,如果正在运用一个资源时候直接退出是不好的.
stop方法,更粗暴.直接无响应杀死.尽量不使用
while(flag){} boolean flag = true;//来这样判断,进程.
join方法中t1.join即为先执行run中的程序,结束时开始执行主程序,相当于方法调用
if(i%10==0){yield()};让出内存,让别人执行一会.
ti.setPriority(Thread.NORN_Priority +3);//在正常优先级中+3;
Thread.currentThread().isAlive()//找到这个线程,判断线程是否存在
synchronized(this)//锁住当前线程,实现线程同步的弊端.
死锁问题,用例如if(a==1),synchronized(o1)我们要顺序完成这线程,
我们synchronized(o2)设置为if(a==0)则执行死锁o2,放到o1线程中.o1放到o2中,完成死锁.
一个进程被锁住不进行同步的时候,这个时候依旧会影响到没有锁的同步对象,需要特别注意
注意wait()与notify()阻塞的使用以及叫醒.需要使用try,catch.
notify是叫醒其他多个线程进行执行.而非是对自己进行叫醒.
wait时别的线程可以访问锁定对象,调用wait时必须锁定该对象,
而sleep时别的线程也不可以访问锁定对象.