java多线程知识
small__snail__5
如果有一天您来到了这里请留下您的痕迹,欢迎各种评论,一同进步。
我愿意做一只小蜗牛,不艳羡别人的速度,而独享自己的慢慢旅程,总有一天,我也可以骄傲的告诉所有人,我虽然慢,但是我不曾放弃,人生总要坚持点什么。
展开
-
java中多线程同步函数this锁的证明以及静态同步函数的锁
//首先是对多线程this锁的证明,这里是看大牛博客的然后自己理解了的学习笔记,这里模拟两个窗口进行车票的售卖,当两个窗口对同一资源车票在竞争过程中产生的同步问题,因此通过加锁解决数据安全问题,代码中若将sale1中的synchronized中的this锁换为obj也就是再类中的域定义的锁的时候会出现数据安全问题。//如何证明:对于两个线程,同时启动,一个线程使用同步函数,另一个使用同步代码块...原创 2018-07-29 11:51:35 · 756 阅读 · 0 评论 -
设置守护线程通过setDDaemon()
//守护线程当其他用户线程运行结束,守护线程结束运行,见代码:package ThreadTest;class Processor13 implements Runnable{ @Override public void run() { // TODO Auto-generated method stub while(true){ try{ Thread.sle...原创 2018-08-02 15:41:07 · 547 阅读 · 0 评论 -
通过synchronized简单实现线程同步保证数据安全性(两例)
//【注意】:何时需要线程同步:1.有共享数据;2.对共享数据有写的操作;3.多线程环境//例一:模拟银行取款,对同一账户两个人一个通过ATM一个通过人工同时取款,此时相当于两个线程,那么此时对同一共享数据余额有写的操作,且是多线程则需要使用线程同步,见代码:package ThreadTest;class Picket{ private double num; public v...原创 2018-08-01 10:59:29 · 564 阅读 · 0 评论 -
线程的让位yield与合并join
//这里要知道yield是一个静态让位方法,什么意思呢?当有两个优先级相同的线程时可以通过yield给另一个线程让位,你可以自定义让位的条件,但是让位的时间是不确定的,定义了让为条件后在该条件下一定会让位但同样有可能在其他条件下也会让位,下面是代码,当一个数能整出20时便让位给主线程,这个条件是一定会执行的,但是并不意味着一定是20的整数倍才让位。见代码:package ThreadTest...原创 2018-07-31 15:27:49 · 305 阅读 · 0 评论 -
终止一个简单线程的方法
//下面代码是在5秒后终止线程,通过一个实现Runnable接口的类的对象的成员变量控制线程的运行,见代码:package ThreadTest;class Processor08 implements Runnable{ public boolean flag = true; @Override public void run() { // TODO Auto-gener...原创 2018-07-31 14:39:07 · 219 阅读 · 0 评论 -
线程静态方法sleep()详解以及唤醒线程方法interrupt
//java多线程中的sleep方法,这是一个手动给线程加阻塞的一个方法,当调用sleep方法后线程从运行到阻塞等阻塞时间过后到就绪状态。sleep是一个静态方法因此直接通过Thread调用他与线程对象名无关。//下面代码中有一个注意点:在main方法中有一句t1.sleep(2000),是t1线程启动后2s才运行吗?不是,这里就要注意因为sleep是一个静态方法,因此和线程对象是无关的,要看...原创 2018-07-31 10:26:01 · 8603 阅读 · 0 评论 -
java多线程给线程设置优先级
//给线程设置优先级,那么优先极高的相对来说获得时间片就更容易,但不绝对,一般情况是在所有线程都会被执行的情况下,会先执行优先极高的线程,但事无绝对。package ThreadTest;class Processor05 implements Runnable{ @Override public void run() { // TODO Auto-generated metho...原创 2018-07-31 09:30:24 · 3496 阅读 · 0 评论 -
线程的调度与控制
通常我们的计算机只有一个cpu,cpu在某个时刻只能执行一条指令,线程只有得到cpu时间片也就是使用权,才可以执行指令。在单个cpu的机器上线程并不是并行运行的,只有多个cpu上线程才可以运行。java虚拟机要负责线程的调度,取得cpu的使用权,目前有两种调度模式:分时调度模式和抢占调度模式,java属于抢占调度模式。分时调度模式:所有线程轮流使用cpu的试用权,平均分配每个线程占用cpu时间...原创 2018-07-30 18:38:10 · 288 阅读 · 0 评论 -
java线程的生命周期(图解)
一般在就绪和运行状态之间切换时,每次的运行在上次运行之后继续运行,而不是获得时间片后从新运行原创 2018-07-30 17:50:55 · 2052 阅读 · 1 评论 -
关于主线程和其他线程之间的关于栈内存的一些问题(含图解)
//首先要明确java程序的运行原理:java命令调用虚拟机,此时虚拟机相当于一个应用程序,该程序启动主线程,主线程调用某个类的main方法。//其次明确一个线程一个栈内存//所以在下面的代码中有两个线程一个是主线程,一个是t线程,t.start()启动线程后告诉jvm分配一块儿栈内存,也就是此时有两块儿栈内存,一块儿是主线程的栈内存,一块儿是t线程的栈内存。即使当main方法运行完毕,程...原创 2018-07-30 17:21:55 · 1099 阅读 · 0 评论 -
关于java多线程的一些知识
进程:一个进程对应一个应用程序。多进程的作用:多进程不是提高cpu的处理速度,而是提高cpu的使用率,当然对于多核处理器。进程与进程之间的内存是独立的。线程:进程的一个执行场景,一个进程可以启动多个线程。多线程的作用:多线程是提高应用程序的使用率的。线程和线程共享堆内存和方法区的内存,栈内存独立,一个线程一个栈。java程序运行的原理:java命令会启动虚拟机,此时虚拟机相...原创 2018-07-30 16:48:49 · 104 阅读 · 0 评论 -
java死锁
//继上篇文章java中多线程同步函数this锁的证明以及静态同步函数的锁之后,这里写一个多线程的死锁,思路是每个线程总共用两把锁,开始时第一个线程用第一把锁紧接着用第二把锁,第二个线程用第二把锁然后紧接着用第一把锁,这样但凡有一个线程没有释放锁,此时程序就产生了死锁。见代码:package Thread01;class Thread02 implements Runnable{ ...原创 2018-07-29 17:00:49 · 162 阅读 · 0 评论 -
java定时器Timer对象
//这是一个每间隔10秒运行一次的代码,期中日期可自定义该你想改的时间到时候会自动运行,见代码:package ThreadTest;import java.text.*;import java.util.*;class LogTimerTask extends TimerTask{ public void run(){ System.out.println(new Sim...原创 2018-08-02 16:26:53 · 472 阅读 · 0 评论