多线程学习记录

一、线程安全

当多线程访问时,采用了加锁的机制;即当一个线程访问该类的某一个数据时,会对这个数据进行保护,其他线程不能对其访问,直到该线程读取结束之后,其他线程才可以使用。

二、System.currentTimeMillis()

System类中的方法cuurentTimeMills返回从GMT1970年1月1日00:00:00开始到当前时刻的毫秒数。

三、SimpleDateFormat

介绍: 一个与语言环境相关的格式化日期和分析日期的工具类。 * 利用该类可以将日期转换成文本,或者将文本转换成日期。
用法:指定format格式的SimpleDateFormat对象,调用format方法,将date类型日期,只能格式化成同样format类型的String日期文本。
y年 M月 d日 h时 m分 s秒

四、线程礼让Yield

让当前正在执行的线程暂停,但不阻塞 将线程从运行状态转为就绪状态 让cpu重新调度,礼让不一定成功,是否礼让成功,由cpu调度决定。

四、线程强制执行 join

中断正在执行的程序,转而执行Runnable实现类中的run方法中的代码,使原线程阻塞,优先强制执行join的Thread中的代码。待此线程完成后,再执行其他线程,其他线程阻塞; 可以想象成让run()中的代码插队到主线程中

五、jdk帮助文档

列举了Java全部类及其java类的操作方法。JDK是 Java 语言的软件开发工具包,JDK是整个java开发的核心,它包含了JAVA的运行环境(JVM+Java系统类库)和JAVA工具。 jre和jdk的区别是:JRE是java运行时环境而JDK是java开发工具包,JDK包含JRE。

六、线程的优先级priority

当线程的优先级没有指定时,所有线程都携带普通优先级。 优先级可以用从1到10的范围指定。10表示最高优先级,1表示最低优先级,5是普通优先级。 记住优先级最高的线程在执行时被给予优先。但是不能保证线程在启动时就进入运行状态。 与在线程池中等待运行机会的线程相比,当前正在运行的线程可能总是拥有更高的优先级。 由调度程序决定哪一个线程被执行。 t.setPriority()用来设定线程的优先级。 记住在线程开始方法被调用之前,线程的优先级应该被设定。
线程优先级越高,获得 CPU 时间片的概率就越大,但线程优先级的高低与线程的执行顺序并没有必然联系。,优先级高的线程得到的CPU资源比较多,也就是CPU优先执行优先级高的线程对象中的任务。
线程的优先级说明在程序中该线程的重要性。系统会根据优先级决定首先使用哪个线程,但这并不意味着优先级低的线程得不到运行,只是它运行的几率比较小而已

7.线程调度器Thread Scheduler

操作系统的核心,它实际就是一个常驻内存的程序,不断地对线程队列进行扫描,利用特定的算法(时间片轮转法、优先级调度法、多级反馈队列调度法等)找出比当前占有CPU的线程更有CPU使用权的线程,并从之前的线程中收回处理器,再使待运行的线程占用处理器。
线程调度器是一个操作系统服务,它负责为 Runnable 状态的线程分配 CPU 时间。 一旦我们创建一个线程并启动它,它的执行便依赖于线程调度器的实现。

8.守护Daemon线程

也称“服务线程”,在没有用户线程可服务时会自动离开。优先级:守护线程的优先级比较低,用于为系统中的其它对象和线程提供服务。在程序运行时在后台提供一种通用服务的线程,这种线程并不属于程序中不可或缺的部分。
主线程在其他非守护线程运行完毕后才算运行完毕(守护线程在此时就被回收)这里的运行完毕就是线程死掉了,回收了。
线程分为用户线程和守护线程 虚拟机必须确保用户线程执行完毕 虚拟机不用等待守护线程执行完毕
守护线程不能持有任何需要关闭的资源,例如打开文件等,因为虚拟机退出时,守护线程没有任何机会来关闭文件,这会导致数据丢失。
虚拟机必须等待用户线程执行完毕,不用等待守护线程执行完毕。当用户线程完成后,虚拟机就自动关闭,守护线程也就自动死亡了。
如果没有用户线程,都是守护线程,那么JVM结束(所有的线程都会结束) 守护进程(Daemon)是运行在后台的一种特殊进程。
1.Java语言无论是线程还是线程池,默认都是用户线程,因此用户线程也叫普通线程。 2.以线程为例,要查看线程是否为守护线程,只需通过调用isdaemon()方法查询即可。

9.线程同步机制

即当有一个线程在对内存进行操作时,其他线程都不可以对这个内存地址进行操作,直到该线程完成操作, 其他线程才能对该内存地址进行操作,而其他线程又处于等待状态,实现线程同步的方法有很多,临界区对象就是其中一种。
从广义上说,Java平台提供的线程同步机制包括锁、volatile关键字、final关键字、static关键字和一些相关的API,如Object.wait( )/.notify( )等。
当多个线程同时访问同一种共享资源时,可能会造成数据的覆盖等不一致性问题, 此时就需要对线程之间进行通信和协调,该机制就叫做线程的同步机制。
一套用于协调线程之间的数据访问的机制.该机制可以保障线程安全。
由于同一进程的多个线程共享同一块存储空间,在带来方便的同时,也带来了访问冲突问题,为了保证数据在方法中被访问时的正确性

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值