1.实现线程的两种方式:继承java.lang.Thread/实现java.lang.Runnable接口
运行状态 →(调用Thread类中sleep()方法)→休眠状态
运行状态 →(发出输入输出请求)→阻塞状态(不能回到运行状态)
运行状态 →(run()方法执行完毕)→死亡状态
5.操作线程的方法
线程的休眠:sleep()以毫秒为单位
线程的加入:join() 加入的线程执行完毕后执行原来的线程
线程的中断:stop()方法停止线程
run()方法中使用无限循环的形式,然后使用一个布尔型标记控制循环的停止
若使用了sleep()/wait()方法进入就绪状态,可使用Thread类中的interrupt()方法使线程离开run()方法,同时结束线程,程序抛出InterruptException异常,用户可在处理异常时完成线程的中断业务处理,如终止while循环

线程的礼让:yield()方法 只是一种暗示,不可保证当前线程会将资源礼让;使具有同样优先级的线程有进入可执行状态的机会
线程安全 多个线程同时存取单一对象的数据(抢票系统)

2.继承Thread类:覆盖run()方法,将实现该线程功能的代码放入run()方法中(通常run()方法中使用无限循环的形式,可指定一个跳出循环的条件),调用Thread类中的start()方法执行线程
3.实现Runnable接口:已继承其他类而还需实现多线程,则可通过匿名类实现接口(线程执行一次)
运行状态 →(调用Thread类中sleep()方法)→休眠状态
运行状态 →(发出输入输出请求)→阻塞状态(不能回到运行状态)
运行状态 →(run()方法执行完毕)→死亡状态
5.操作线程的方法
线程的休眠:sleep()以毫秒为单位
线程的加入:join() 加入的线程执行完毕后执行原来的线程
线程的中断:stop()方法停止线程
run()方法中使用无限循环的形式,然后使用一个布尔型标记控制循环的停止
若使用了sleep()/wait()方法进入就绪状态,可使用Thread类中的interrupt()方法使线程离开run()方法,同时结束线程,程序抛出InterruptException异常,用户可在处理异常时完成线程的中断业务处理,如终止while循环
线程的礼让:yield()方法 只是一种暗示,不可保证当前线程会将资源礼让;使具有同样优先级的线程有进入可执行状态的机会
6.线程的优先级 setPriority(String threadName,int priority,Thread t)
线程安全 多个线程同时存取单一对象的数据(抢票系统)
线程同步机制 同步块 将操作代码设置在同步块中 使用synchronized(Object){}Object为任意一个对象,每个对象存在一个标志位,并具有两个值,值为0表明此同步块有其它线程正在运行,该线程则处于就绪状态;值为1则可运行该线程