Java-线程

进程:是正在运行的数据

        是系统进行资源分配和调用的独立单位

        每一个进程都有它自己的内存和系统资源

线程:是进程中的单个顺序控制流,是一条执行路径

        单线程:一个进程如果只有一条执行路径,则称为单线程程序

        多线程:一个进程如果有多条执行路径,则称为多线程程序

实现多线程

1、继承Thread类、重写ran()方法

2、实现Runnable接口、重写run()方法

MyThread thread = new MyThread();//MyThread是自己定义的一个重写run的类

MyThread thread1 = new MyThread();

thread.run();//封装线程执行的代码,直接调用

thread1.start();//启动线程,然后由JVM调用此线程的run()方法

设置线程名

                         setName();

                        thread.setName("线程一");

 带参构造方法:使用时要在类中添加构造方法

                         MyThread thread2 = new MyThread("线程三");

获取当前正在执行的线程对象的引用

                         System.out.println(Thread.currentThread());

线程调度模型

        分时:所有线程轮流使用CPU的使用权,平均分配每个线程占用CPU的时间片

        抢占式:优先让优先级高的线程使用CPU,如果线程的优先级相同,那么会随机选择一个,优先级高的线程获取的CPU的时间片相对多一些——javq使用抢占式

设置线程优先级以及获取线程优先级

                MyThread thread1 = new MyThread("线程一");

                MyThread thread2 = new MyThread("线程二");

                thread1.setPriority(3);//设置线程优先级

                int i1 = thread1.getPriority();//获取线程优先级

                int i2 = thread2.getPriority();//获取线程优先级

                System.out.println(i1+","+i2); thread1.start(); thread2.start();

注:线程优先级高只是代表着获取CPU时间片的概率高,并不是一定会首先执行

同步代码块

        synchronized(对象){执行语句}:相当于给代码上锁,对象就是锁

同步方法

        就是在返回类型前面添加一个关键字synchronized

        同步静态方法的锁对象是 (类.class)——这是类的字节码文件对象

        同步之后可以使用wait()等待以及notifyAll()唤醒其他线程

Lock锁

        Lock是接口,不能直接实例化,可以使用ReentrantLock来实例化

        lock:得到锁

        unlock:解锁

        可以使用try{    lock()    } finally{     unlock()   }的结构可以确保中间代码出现错误时依然释放锁

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值