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

    线程的命名和取得:
     线程的运行每一次都会运行不同的结果,因为各线程会自行抢占资源,如果要区分线程的名称,一般情况下是在线程执行之前进行命名,而不建议在
    启动之后再修改它的名称,或者是为不同的线程设置重名
     对线程的名称进行操作有一下几种方法:
     Thread(Runnable target, String name)
     public final void setName(String name)设置线程名称
     public final String getName()返回线程名称
     public static Thread currentThread()返回对当前正在执行的线程对象的引用
     public final void setPriority(int newPriority)更改线程的优先级。
     
     一般情况下,对线程的操作基本都是在Thread类里面
     
     对于线程名字的操作,会有以下问题:
     如果是实现的Runnable接口,但是对名称操作的方法却是在Thread类里面,那么如何取得线程并修改名称呢?
     
     线程在抢占资源的时候在任何一个时间点有且只有一个线程在运行,所以可以取得运行时候的线程对象——>
     Thread类里面提供了一个currentThread()方法,返回对当前正在执行的线程对象的引用,然后就可以执行操作了。
     
     
     线程的休眠:所谓的线程休眠就是样线程的执行速度变得缓慢一点。
     public static void sleep(long millis,int nanos)throws InterruptedException
     
     
     线程同步与死锁:
     死锁是由于存在多个线程同步时,某种逻辑错误造成的问题,并且不是简单情况下就会出现的,它是突发的
     
     多个线程访问同一个资源时需要考虑到哪些情况?会造成什么问题?
      在处理多线程访问统一资源的时候,要注意同步问题,可以通过同步方法或者同步代码块来解决
      同步方法:synchronized(锁定对象){代码块}
      同步代码块:public synchronized 返回值 方法名(){}
      过多的同步可能会造成死锁
      
      
      同步操作于异步操作相比,异步操作的速度更快,但是同步操作的安全性更高,
                            
                     
     
     
     

  • 相关阅读:
    leetcode——832. 翻转图像
    leetcode——830. 较大分组的位置
    leetcode——1089.复写零
    leetcode——86. 分隔链表
    leetcode——387. 字符串中的第一个唯一字符
    leetcode——389. 找不同
    leetcode——61. 旋转链表
    leetcode——24. 两两交换链表中的节点
    leetcode——817. 链表组件
    leetcode——234. 回文链表
  • 原文地址:https://www.cnblogs.com/Mindreader/p/5474426.html
Copyright © 2011-2022 走看看