多线程:
编码表:GBK,国标码,在该编码中英文字符占一个字节,中文字符占三个字节;UTF-8,万国码英文字符占用一个字节,中文字符占用三个字节。
转换流:从字符流到字节流,OutPutStreamWriter(OutputStream os String charSetName);从字节流到字符流,InputStreamReader(InputStream is String charSetName)。
程序:一个固定的运行逻辑与数据集合,是一个静态的状态,一般存储在硬盘中。进程:一个正在运行的程序,有自己独立分配的资源。线程:一条独立执行的路径。多线程:在执行一个程序时该程序具有多个子程序,每条线程都可以独自执行一条程序并且互不影响。
并行:多条程序同时执行。并发:多个程序同时发起执行,但是不在同一时刻执行,只是在各个任务之间来回切换。
多线程的实现:1直接继承thread类再创建对象调用方法,2如果该类已经继承了别的类那么让该类实现runnable方法创建对象调用方法,使用ExecutorService、Callable、Future实现有返回结果的多线程。
Thread类中的常用方法:
线程休眠:让当前线程暂停
守护线程:守护线程用于守护正常运行的线程,如果一个程序中所有非守护线程
都停止了那么守护线程也就失去了它存在的意义。
线成的优先级(从高到低):MAX_PRIORITY(10),NORM_ PRIORITY(5),MIN_ PRIORITY(1)
同步代码块:synchronize(锁对象){代码块},使用锁以后CPU在线程切换的时候不会影响代码块的执行,换句话说锁保护该代码块所需要的对象使其不受线程切换的影响。
同步方法:权限修饰符 [静态修饰符] synchronize 返回值类型 方法名称(参数列表){需要的方法体}
线程不安全类型:StringBulider、ArrayList、HasMap;线程安全类型:StringBuffer、Vector、Hashtable。
线程的生命周期:
新建态:对象刚创建出来的时候
就绪态:线程准备好了所有的资源,只差CPU的分配
运行态:CPU处于运行的状态
阻塞态:线程主动休息或者缺少运行的资源无法运行
死亡态:线程完成运行或者出现异常调用方法结束
线程池:
将多条线程创建出来,放在一个虚拟的容器中,等到需要使用的时候直接调用,一个线程执行完成一个程序以后可能还会存货继续回收使用,减少创建对象的时间,提高计算机执行效率。