Java知识分享网 - 轻松学习从此开始!    

Java知识分享网

Java1234官方群25:java1234官方群17
Java1234官方群25:838462530
        
SpringBoot+SpringSecurity+Vue+ElementPlus权限系统实战课程 震撼发布        

最新Java全栈就业实战课程(免费)

springcloud分布式电商秒杀实战课程

IDEA永久激活

66套java实战课程无套路领取

锋哥开始收Java学员啦!

Python学习路线图

锋哥开始收Java学员啦!
当前位置: 主页 > Java文档 > Java基础相关 >

深入理解高并发编程 PDF 下载


分享到:
时间:2022-07-11 10:07来源:http://www.java1234.com 作者:转载  侵权举报
深入理解高并发编程 PDF 下载 本站整理下载: 链接: https://pan.baidu.com/s/1IL4MvvXA5pm97LA5DLMWzw 提取码: xfvf 相关截图: 主要内容: 线程与线程池 线程与多线程 1.线程 在操作系统中,线程
失效链接处理
深入理解高并发编程 PDF 下载


 
本站整理下载:
提取码:xfvf 
 
 
相关截图:
 
主要内容:

线程与线程池
线程与多线程
1.线程
在操作系统中,线程是比进程更小的能够独立运行的基本单位。同时,它也是CPU调度的基本单位。线程本身基本上不拥有系统资
源,只是拥有一些在运行时需要用到的系统资源,例如程序计数器,寄存器和栈等。一个进程中的所有线程可以共享进程中的所有
资源。
2.多线程
多线程可以理解为在同一个程序中能够同时运行多个不同的线程来执行不同的任务,这些线程可以同时利用CPU的多个核心运行。
多线程编程能够最大限度的利用CPU的资源。如果某一个线程的处理不需要占用CPU资源时(例如IO线程),可以使当前线程让出
CPU资源来让其他线程能够获取到CPU资源,进而能够执行其他线程对应的任务,达到最大化利用CPU资源的目的。
线程的实现方式
在Java中,实现线程的方式大体上分为三种,通过继承Thread类、实现Runnable接口,实现Callable接口。简单的示例代码分别如
下所示。
1.继承Thread类代码
2.实现Runnable接口的代码
package io.binghe.concurrent.executor.test;
/**
* @author binghe
* @version 1.0.0
* @description 继承Thread实现线程
*/
public class ThreadTest extends Thread {
  @Override
  public void run() {
    //TODO 在此写在线程中执行的业务逻辑
 }
}
3.实现Callable接口的代码
线程的生命周期
1.生命周期
一个线程从创建,到最终的消亡,需要经历多种不同的状态,而这些不同的线程状态,由始至终也构成了线程生命周期的不同阶
段。线程的生命周期可以总结为下图。
其中,几个重要的状态如下所示。
NEW:初始状态,线程被构建,但是还没有调用start()方法。
RUNNABLE:可运行状态,可运行状态可以包括:运行中状态和就绪状态。
package io.binghe.concurrent.executor.test;
/**
* @author binghe
* @version 1.0.0
* @description 实现Runnable实现线程
*/
public class RunnableTest implements Runnable {
  @Override
  public void run() {
    //TODO 在此写在线程中执行的业务逻辑
 }
}
package io.binghe.concurrent.executor.test;
import java.util.concurrent.Callable;
/**
* @author binghe
* @version 1.0.0
* @description 实现Callable实现线程
*/
public class CallableTest implements Callable<String> {
  @Override
  public String call() throws Exception {
    //TODO 在此写在线程中执行的业务逻辑
    return null;
 }
}
BLOCKED:阻塞状态,处于这个状态的线程需要等待其他线程释放锁或者等待进入synchronized。
WAITING:表示等待状态,处于该状态的线程需要等待其他线程对其进行通知或中断等操作,进而进入下一个状态。
TIME_WAITING:超时等待状态。可以在一定的时间自行返回。
TERMINATED:终止状态,当前线程执行完毕。
2.代码示例
为了更好的理解线程的生命周期,以及生命周期中的各个状态,接下来使用代码示例来输出线程的每个状态信息。
WaitingTime
创建WaitingTime类,在while(true)循环中调用TimeUnit.SECONDS.sleep(long)方法来验证线程的TIMED_WARTING状态,代码如
下所示。
WaitingState
创建WaitingState类,此线程会在一个while(true)循环中,获取当前类Class对象的synchronized锁,也就是说,这个类无论创建多
少个实例,synchronized锁都是同一个,并且线程会处于等待状态。接下来,在synchronized中使用当前类的Class对象的wait()方
法,来验证线程的WAITING状态,代码如下所示。
BlockedThread
package io.binghe.concurrent.executor.state;
import java.util.concurrent.TimeUnit;
/**
* @author binghe
* @version 1.0.0
* @description 线程不断休眠
*/
public class WaitingTime implements Runnable{
  @Override
  public void run() {
    while (true){
      waitSecond(200);
   }
 }
  //线程等待多少秒
  public static final void waitSecond(long seconds){
    try {
      TimeUnit.SECONDS.sleep(seconds);
   } catch (InterruptedException e) {
      e.printStackTrace();
   }
 }
}

------分隔线----------------------------

锋哥公众号


锋哥微信


关注公众号
【Java资料站】
回复 666
获取 
66套java
从菜鸡到大神
项目实战课程

锋哥推荐