Java多线程
进程:每个独立执行的程序就是进程,也就是正在进行的程序
线程:一个进程中可以包含一个或多个线程
多线程与单线程的对比:(图1)
用Thread类创建线程:
后台线程:如果我们对某个线程对象在启动之前调用setDaemon(true)方法,这个线程就变成后台线程
synchronized 关键字,代表这个方法加锁,相当于不管哪一个线程A每次运行到这个方法时,都要检查有没有其它正在用这个方法的线程B(或者C D等),有的话要等正在使用这个方法的线程B(或者C D)运行完这个方法后再运行此线程A,没有的话,直接运行 它包括两种用法:synchronized 方法和 synchronized 块。
使用Runnable接口创建多线程:多线程的应用,我们一般不直接继承(extends Thread)来实现多线程; 使用Runnable接口创建多线程可以更合理的分配资源
//多线程的在实际中的应用:网络聊天程序的收发,表记录的复制中途取消,www服务器为每一个来访者都建立专线服务
实现线程之间的同步:可以用同步函数也可以用同步代码块
同步代码块 和同步函数一起时必须使用this
出现死锁最明显的特征,程序停滞不前
下面程序是测试死锁问题所编写:修改掉部分注释内容适用于线程编写