这些天一直在研究java的多线程机制,中间小总结一下。
java多线程中主要概念有任务、线程、gui事件分发线程、多线程、线程池、
1.任务:实现Runnable接口的类,并重写run()方法实现任务。
2.线程:一般通过以任务实例为参数的Thread构造函数创建线程实例。Thread myTask = new Thread(myWork);
(虽然可以直接通过继承Thread类创建线程类进而创建线程实例,但推荐使用这种方法,可将任务和线程分离)
3.gui事件分发线程:gui的事件处理和绘图代码均在 事件分发线程 这个单一线程中执行。可以通过
public static void invokeLater(Runnable doRun)
把任务加入到事件分发线程中执行,可以确保不发生死锁。
4.多线程并发执行:为及时响应、提高资源利用率(并发性的优点),可以为长期执行的任务、经常由于资源欠缺处于阻塞态的任务单独创建线程。
例如:在Swing图形化编程时,当点击按钮触发一个长期执行的任务时,再点击其他控件时,程序会没有任何反应直到此任务结束。
5.线程池:单个任务创建单个线程用Thread类,为大量任务创建线程应该用线程池。
public static ExecutorService newCachedThreadPool()
public static ExecutorService newFixedThreadPool(int nThreads)
6.线程同步:防止多个进程同时访问共享数据,通过同步方法、同步语句、加“显性锁”防止出现资源冲突,保证线程安全。
7.线程间协作:“条件锁”实现。
╮(╯▽╰)╭,还是不会写博客。。。