zoukankan      html  css  js  c++  java
  • Java笔记--多线程

    1、线程的创建与运行(方式一):

    --1)创建一个Thread的子类;

    --2)重写Thread类的run()方法;

    --3)创建一个子类的对象;

    --4)调用线程的start()方法来启动线程,Java虚拟机将调用run()方法。

    public class TestThread {
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            SubThread st = new SubThread();
            st.start();
            
            System.out.println("---MainThread---");
        }
    }
    
    class SubThread extends Thread{
        @Override
        public void run() {
            System.out.println("---SubThread---");
        }
    }

     2、Thread的常用方法:

    --1)start(); //启动线程

    --2)run(); //子线程要执行的代码写在该方法中

    --3)currentThread(); //静态方法,调取当前线程

    --4)getName(); //获取当前线程名称

    --5)setName(); //设置当前线程名称

    --6)yield(); //释放当前CPU执行权

    --7)join(); //在A线程中调用B线程的join()方法,此时A线程停止执行,B线程开始执行,直到B执行完毕A再继续执行

    --8)isAlive(); // 判断当前线程是否为活动的

    --9)sleep(long l);//显示的让当前线程睡眠l毫秒

    --10)线程通信:wait(),notify(),notifyAll()

    --11)优先级:getPriority(),setPriority()

    3、方式二:

    --1)创建一个类,该类需实现Runnable接口;

    --2)实现Runnable接口的抽象方法run();

    --3)创建实现类对象;

    --4)将此对象作为形参传递给Thread类的构造器中,创建Thread类对象;

    --5)调用start()来启动线程。

    4、方式二优于方式一,即实现的方式优于继承的方式,因为实现的方式避免了Java单继承的局限性而且更易于共享数据。

    5、使用多线程的优点:

    --1)提高应用程序的响应;

    --2)提高计算机系统CPU的利用率;

    --3)改善程序结构。

    6、线程分类:1)守护线程;2)用户线程。

    7、线程的生命周期:1)新建;2)就绪;3)运行;4)阻塞;5)死亡。

    8、线程的同步:

    --1)同步代码块;

    synchronized(同步监视器){
    
      //需要被同步的代码
    
    }

    --2)同步方法:将操作共享数据的方法声明为synchronized。

    9、死锁:不同的线程分别占用对方需要的同步资源不放弃,都在等待对方放弃自己需要的同步资源。解决的方法:

    --1)专门的算法、原则;

    --2)尽量减少同步资源的定义。

    10、线程的通信:

    --wait():令当前线程挂起并放弃CPU、同步资源,使别的线程可访问并修改共享资源,二当前线程排队等候再次对资源的访问;

    --notify():唤醒正在排队等待同步资源的线程中优先级最高者结束等待;

    --notifyAll():唤醒正在排队等待资源的所有线程结束等待。

    --注:上诉三个方法只有在synchronized方法或者synchronized代码块中才能调用,否则会出现异常(java.lang.IllegalMonitorStateException)

  • 相关阅读:
    java并发编程的艺术笔记-第二章
    java并发编程的艺术笔记-第一章
    Class字节码的加载
    Maven学习笔记(1)
    深入分析java web技术内幕读书笔记-第一章
    VMware虚拟机扩展内存和磁盘
    【避坑】for循环删除列表元素的注意事项--remove函数逆序删除
    虚拟机无法上网问题解决
    jmeter变量跨线程组使用--设置全局变量
    常见慢查询原因
  • 原文地址:https://www.cnblogs.com/tengtao93/p/4836261.html
Copyright © 2011-2022 走看看