1.程序,进程和线程的概念
程序(program):是为了完成特定的任务,用某种语言写的一组指令的集合,是一段静态的代码
进程(process):程序的一次执行过程,正在内存中运行的程序,
每个进程都有独立的内存空间,系统运行一个程序即是从一个进程从创建开始的
程序是静态的,进程是动态的
进程是操作系统分配资源的最小单位
现代操作系统支持多进程
线程(thread):进程进一步细化为线程,是程序内部的一条执行路径,一个进程有一个或者多个线程。一个进程并行执行多个线程,就是支持多线程的。
线程是CPU调度和执行的基本单位
2.创建和启动线程
>三种方式:Thread类,Runnable接口,Callable接口
Question:能不能直接使用run方法调用线程???
不能 那就没开启线程 run是留给虚拟机调用的
Tips:不能让已经start()的方法再次start
>实现接口和继承类的相同和不同?
建议:使用Runnable接口
避免继承性的局限
更适合处理共享数据的问题
实现了代码和数据的分离
其实Thread也实现了Runnable接口
3.Thread常用方法
>start():启动线程调用run()方法
>run():将线程要执行的操作放入
>currentThread():获取当前执行的线程
>getName():获取线程名称 Thread.currentThread().setName();能这么用
>sleep(long millis)静态方法,调用时,可以是当前线程休眠
>yield()静态方法,主动释放cpu执行权,可能不执行它了就,但是也可能执行它
>join()不是静态方法,在线程A中通过B调用join(),意味着B完了A才能执行
>isAlive()非静态判断当前线程是否存活
>setPriority()设置优先级
4.线程生命周期
新建就绪阻塞运行死亡