欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > > 文章正文

【JavaSE】Java中多线程基本知识,javasejava多线程

来源: javaer 分享于  点击 31100 次 点评:273

【JavaSE】Java中多线程基本知识,javasejava多线程


进程:具有一定独立功能的程序关于某个数据集合上的一次运行活动。(通俗的说,一个打开的程序) 线程:进程的一个实体,CPU调度分配的基本单位 进程与线程的区别:一个程序至少有一个进程,一个进程至少有一个线程 多线程存在意义:允许多线程冰法,提高程序运行效率 注意:某一瞬间,只有一个线程在CPU上执行 线程的创建方式:new Thread().start() 创建一个线程:Thread类 new Thread()创建一个线程对象 定义一个类继承Threadlei ,子类具有了线程功能 创建Thread类的子类对象,也可以创建一个线程
线程的启用 Thread类定义了start方法,用于启动当前线程 在启用一个线程时,虚拟机会自动调用对象的run()方法 其他方法: sleep 使线程进入睡眠状态,要指定唤醒时间,会抛出异常 setDaemon ture 将当前进程置为一个后台进程 join 合并线程,会抛异常。加进来的执行,被加的停掉 currentThread 获得当前运行的线程 setName 给线程起名
程序只要有一个非后台(守护)的线程在运行,就不会结束
创建线程方式二 实现Runnable接口 子类覆盖接口中的run方法 通过Tread实例创建线程,并将实现了Runnable接口的子类对象作为参数传递给Thread类的构造函数 Thread类对象调用start方法开启线程 Thread的异常只能抓,因为父类没有抛出这样的异常。子类不能抛出比父类更多类型的异常
线程安全问题 出现的原因:多个线程访问出现延迟,线程的随机性 解决方式:同步 synchronized(lock){ } 每个对象都可以作为同步的锁,对象都有一个锁旗标(标志位,0或1) 函数可以直接加synchronized编程同步函数 同步函数用的锁:this对象
需要同步的多段代码要用同一把锁(同一个对象)
死锁:两个对象互相要锁的情况
同步的特点: 同步的前提,需要两个及异常的线程 多个线程使用同一个锁 同步的弊端:每个线程都回去判断同步上的锁,耗费资源,降低运行效率
线程间的通信 两个线程可以互相通信,一个线程可以通过wait方法等待,cpu会让给别的线程。等待的线程需要其他线程调用notify()方法唤醒。notify只能用在唤醒在调用方法的对象上等待的线程,只能在锁上等,不同步即不能操作。为了防止虚假唤醒,wait()应放在循环中。
Lock接口——java.util.concurrent.locks ReentrantLock condition(为同一个锁提供不同的wait条件) await——wait,signal——notify condition最好也放在循环中,因为condition也会出现虚假唤醒

相关文章

    暂无相关文章

用户点评