java多线程编程
1,java实现多线程要靠Thread或Runnable接口,这俩都是java.lang包下的,都包含一个run()方法,该方法中是线程要完成的任务代码。
2,常用方法有:Thread()构造方法创建线程、start()方法启动线程、sleep()方法让线程休眠、join()使其他线程等待当前线程终止、yield()当前运行线程释放处理器资源、currentThread()获取当前运行线程的引用,每个方法有各种重载,查api。
3,runnable是不具备start方法的,所以实现了runnable接口的业务类,还是要被构造成Thread类进行启动等调度控制。
4,正确停止一个线程的方法,应该是设置标志位,而不是直接调用stop方法(太粗暴),且不能用interrupt()方法退出线程,刚方法初中是中断线程,如果该线程正在休眠,程序就不会中断,且会抛出异常响应中断。
5,线程的互斥和同步,互斥通过synchronized关键字实现,该关键字可以加在方法体上也可以加在语句块上,需要一个标志的普通对象。
synchronized (Object lockObj) {争用代码体},然后根据业务逻辑设立wait和notify方法,解决同步通信问题,使当前线程等待,其他满足条件线程开始运行,注意这两个方法都是Object类的。
6,java语言平台的线程开发工具,都在java.util.concurrent包下
线程池ExecutorService、Callable、Future、BlockingQueue等类