线程

来源:互联网 发布:linux ed2k wget 编辑:程序博客网 时间:2024/06/05 05:13
1、进程?
进程就是正在运行的程序
正在运行的程序,是系统进行资源分配和调用的独立单位
每一个进程都有它自己的内存空间和系统资源


2、线程?
在同一个进程内又可以执行多个任务,而这每一个任务就可以看成是一个线程
是进程中的单个顺序控制流,是一条执行路径
一个进程如果只有一条执行路径,则称为单线程程序
一个进程如果有多条执行路径,则称为多线程程序


3、多线程的意义?
为了提高应用程序的使用率


4、Java程序的运行原理:
由java命令启动JVM,JVM启动就相当于启动了一个进程。接着有该进程创建了一个主线程去调用main方法。


5、jvm虚拟机的启动是单线程的还是多线程的?
多线程的。原因是垃圾回收线程也要先启动,否则很容易会出现内存溢出。现在的垃圾回收线程加上前面的主线程,最低启动了两个线程,所以,jvm的启动其实是多线程的。


6、设置线程的优先级
获取线程的优先级:public final int getPriority()
更改线程的优先级:public final void setPriority(int newPriority)
默认优先级是10,线程优先级范围是1到10


7、线程休眠
public static void sleep(long millis)  停顿一会再走
8、线程的加入
public final void join():等待该线程终止。    先把加入的这个线程走完(终止)然后其他的线程自已去抢
9、线程的礼让
public static void yield():暂停当前正在执行的线程对象,并执行其他线程
10、线程守护
public final void setDaemon(boolean on):将该线程标记为守护线程或用户线程。
当正在运行的线程都是守护线程时,Java 虚拟机退出。 该方法必须在启动线程前调用。
11、线程中断
public final void stop():让线程停止,过时了,但是还可以使用。
public void interrupt():中断线程。 把线程的状态终止,并抛出一个InterruptedException。


12、线程的生命周期
新建:创建线程对象
就绪:有执行的资格,没有执行权
运行:有执行的资格,有执行权
  (阻塞:由于一些操作让线程处于该状态。没有资格,没有执行权而另一些操作却可以把它激活,激活后处于就绪状态)
死亡:线程对象变成垃圾,等回收


13、实现Runnable接口
14、解决线程安全问题
同步代码块:
synchronized(对象){
需要同步的代码;
  }
注意:
   同步可以解决安全问题的根本原因就在那个对象上。该对象如同锁的功能。
   多个线程必须是同一把锁。只要有一个窗口,其他都都进不来


15、同步的好处与弊端
同步的好处 
  同步的出现解决了多线程的安全问题。
同步的弊端
  当线程相当多时,因为每个线程都会去判断同步上的锁,这是很耗费资源的,无形中会降低程序的运行效率。


16、同步方法 
A:同步代码块的锁对象是谁呢?
任意对象。
B:同步方法的格式及锁对象问题?
把同步关键字加在方法上。
同步方法是谁呢?
this
C:静态方法及锁对象问题?
静态方法的锁对象是谁呢?
类的字节码文件对象。(反射会讲)
 



原创粉丝点击