zoukankan      html  css  js  c++  java
  • 线程各种 已看1 和之前重复的比较多 没用

    1.进程是一个独立的运行环境, 进程可以是一个程序或者一个应用,线程是进程的一个执行的任务

    2.多线程编程的好处,

    多线程并发访问提高访问效率,并且多线程访问不用因为线程等待资源而空闲线程.  多线程可以充分利用多核CPU 

    4.可以继承Thread类并重写run()方法, 实现runnable接口,它直接传递给Tread构造函数 并创建thread对象.

    5.创建线程,new 创建一个线程后,该线程没有被系统分配资源,这时线程处于创建状态

    就绪状态,  线程调用start方法使系统为该线程分配资源,使线程进入就绪状态.

    运行状态. Java运行系统通过调度选中一个处于就绪状态的线程,使其占有CPU并转为运行状态。此时,系统真正执行线程的run()方法。

    阻塞和唤醒状态  线程调用sleep方法使线程进入睡眠指定时间,

    线程调用wait方法使线程挂起, 当线程调用notify使线程执行运行状态.

    死亡当线程调用 stop 或者interspter使线程进入死亡状态

    6.线程直接调用run方法就像当于线程调用一个普通方法.

    7.调用sleep方法或者wait,notify,notifyAll

    Sleep使线程睡眠一段时间,是由线程本身控制, 例如.我要点火,烧水,煮饭.   我点完火,我想睡一觉之后再烧水然后煮饭. 控制权是由我自己控制.

    Wait方法是其他对象对线程的控制. 其他对象相当于传话的功能. 例如我是厨师,我要点火,烧水,煮饭. 我点完火之后老板打电话告诉我停止.  

    Sleepwait实际区别在于sleep是对线程的控制. Wait方法是线程之间的通讯问题

    thisOBJ.notify()的时候,那么我就可以煮饭了,这个被暂停的线程就会从暂停处 继续执行. 

    1Sleep是继承thread. Wait输入Object

    2wait方法只能在同步块或者方法中执行 sleep可以在任何方法中执行.

    2,最主要是sleep方法没有释放锁,而wait方法释放了锁,使得其他线程可以使用同步控制块或者方法。

    Sleep抛异常,  wait方法不需要抛异常.

    8.线程分1-10个优先级  10优先级最高 1最低

    12.线程之间的通讯是通过waitnotify方法 在同步块或者同步方法中运行

    18.同步块更好. 因为他不会锁住整个对象.

    1. 线程不需要同步时, 可以调用threadLocal方法.

    23.-----两个以上的线程永远处于阻塞状态,成为死锁. 避免死锁,

    1.原子操作是事务的一个特性,是一个不可分割的执行单元.

    2.线程调度:协同式 线程执行时间由线程本身控制, 线程把自己的工作执行完成后,自己切换到另一个线程上.

    抢占式:  线程执行时间由系统控制.

    4字符流和字节流的区别.

    字节流单位是字节.  字符流的单位是Unicode码元  一个字符占俩字节

    字符流一般只传输文本数据. 字节流可以传输任何数据.

    ------  字节流不适用缓冲区  字符流适用缓冲区

    字节流 继承outputstream  字符流继承 inputstreamreader  

    -----序列化serializa  

    7大量的从硬盘读取 需要适用字符流 因为字符流存在缓冲区 减少对硬盘的损伤

    8.字节流 因为字节流可以将不同类型的数据转换成字节. 然后打印到数据源

    outputsteamwtrite

    19.流一般不需要关闭如果需要关闭 需要在fannally中关闭.

    25.serlizible接口 字节流

    1. 当需要读写的时候  使用序列化. serlizible标记的对象可以实现读写功能

    3反射  哪里用到反射

    Class.forname(driver).newinstance() 现在很多框架都用到反射  hibernateStruts

    Java序列化

    我们有时候将一个java对象变成字节流的形式传出去或者从一个字节流中恢复成一个java对象,例如,要将java对象存储到硬盘或者传送给网络上的其他计算机,这个过程我们可以自己写代码去把一个java对象变成某个格式的字节流再传输,但是,jre本身就提供了这种支持,我们可以调用OutputStreamwriteObject方法来做,如果要让java 帮我们做,要被传输的对象必须实现serializable接口,这样,javac编译时就会进行特殊处理,编译的类才可以被writeObject方法操作,这就是所谓的序列化。需要被序列化的类必须实现Serializable接口,该接口是一个mini接口,其中没有需要实现的方法,implements Serializable只是为了标注该对象是可被序列化的。

    死锁和避免死锁

    死锁是指两个以上的线程永远阻塞的情况,这种情况产生至少需要两个以上的线程和两个以上的资源。

    避免嵌套锁,只在需要的地方使用锁和避免无限期等待是避免死锁的通常办法,

    什么是TreadLocal

    ThreadLocal用于创建线程的本地变量,我们知道一个对象的所有线程会共享它的全局变量,所以这些变量不是线程安全的,我们可以使用同步技术。但是当我们不想使用同步的时候,我们可以选择ThreadLocal变量。

  • 相关阅读:
    Vue里用moment.js
    回到顶部|回到底部功能的实现(Vue)
    Vue绑定下拉框型的树
    Excel导入数据库前后端代码
    Windows应用程序开发笔记-控制和获取其他程序窗口控件内容
    SQL Server查询、添加、修改表和字段的备注描述
    windows 共享文件夹,和共享打印机
    Visual Studio 2015安装过程卡住,解决办法
    python绘图 初识Python绘图
    GCC、LLVM、Clang
  • 原文地址:https://www.cnblogs.com/shan1393/p/9251940.html
Copyright © 2011-2022 走看看