首页
归档
关于
Search
1
C服务器端
9 阅读
2
1.数据流图(下午题)
8 阅读
3
管道处理模型
8 阅读
4
数据结构与算法
8 阅读
5
3.面向对象设计
7 阅读
软件设计师笔记
.Net
Java
数据库
PHP
运维
前端
Python
中间件相关
云原生
架构设计
Search
标签搜索
websocket
科技新闻
Bi8bo
累计撰写
267
篇文章
累计收到
2
条评论
首页
栏目
软件设计师笔记
.Net
Java
数据库
PHP
运维
前端
Python
中间件相关
云原生
架构设计
页面
归档
关于
搜索到
81
篇与
的结果
2025-04-03
死锁
多个线程各自占有一些共享资源﹐并且互相等待其他线程占有的资源才能运行﹐而导致两个或者多个线程都在等待对方释放资源﹐都停止执行的情形﹒某一个同步块同时拥有“两个以上对象的锁”时,就可能会发生“死锁”的问题.产生死锁的四个必要条件:1.互斥条件:一个资源每次只能被一个进程使用。2.请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。3.不剥夺条件:进程已获得的资源,在未使用完之前,不能强行剥夺。4.循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。
2025年04月03日
0 阅读
0 评论
0 点赞
2025-04-03
模拟线程不安全案例
多个线程同时操作一个资源情况下,线程不安全,数据紊乱//火车票抢票,模拟多个线程操作同一个对象 public class TicketThread implements Runnable{ private int ticketNum = 10; @Override public void run() { while (true){ if (ticketNum<=0){ break; } System.out.println(Thread.currentThread().getName()+"抢到了第"+ticketNum--+"张票"); try { Thread.sleep(200); } catch (InterruptedException e) { throw new RuntimeException(e); } } } public static void main(String[] args) { TicketThread ticketObj = new TicketThread(); new Thread(ticketObj,"小明").start(); new Thread(ticketObj,"黄牛党").start(); new Thread(ticketObj,"谱乾兄").start(); } }
2025年04月03日
0 阅读
0 评论
0 点赞
2025-04-03
守护线程
线程分为用户线程和守护线程虚拟机必须确保用户线程执行完毕虚拟机不用等待守护线程执行完毕
2025年04月03日
0 阅读
0 评论
0 点赞
2025-04-03
Java 创建多线程的三种方式
1.继承Thread 类(重点)说明:继承thread类,重写run方法,调用start开启线程code:public class TestThread extends Thread { @Override public void run(){ //run方法线程体 for (int i = 0; i < 200; i++) { System.out.println("我在看代码~~"); } } public static void main(String[] args) { TestThread testThread = new TestThread(); testThread.start(); for (int i = 0; i < 200; i++) { System.out.println("我在学习多线程~~"); } } }2.实现Runnable接口(重点)实现runnable接口,重写run方法,执行线程需要丢入runnable的实现类,调用start方法code:public class TestRunnable implements Runnable { @Override public void run(){ //run方法线程体 for (int i = 0; i < 200; i++) { System.out.println("我在看代码~~"); } } public static void main(String[] args) { TestRunnable testRunnable = new TestRunnable(); new Thread(testRunnable).start(); for (int i = 0; i < 200; i++) { System.out.println("我在学习多线程~~"); } } }3.实现Callable接口1.实现Callable接口,需要返回值类型;2.重写call方法,需要抛出异常3.创建目标对象4.创建执行服务:ExecutorService ser = Executors.newFixedThreadPool(1);5.提交执行:Future result = ser.submit(t1)6.获取结果:boolean b = result.get()7.关闭服务:ser.shutdownNow();code:总结:1.线程开启不一定执行,由CPU调度2.不建议使用Thread类:避免OOP单继承局限性3.推荐使用Runnable接口:避免OOP单继承局限性,灵活方便,方便同一个对象被多个线程使用4.Callable可以定义返回值可以抛出异常
2025年04月03日
0 阅读
0 评论
0 点赞
2025-04-03
Java服务器端
java 端使用 WebSocket 可以使用以下三种形式:1、使用 Spring 的底层级 WebSocketAPI 实现(实现 TextWebSocketHandler 接口)2、使用 Spring 高级API 实现(使用 SimpMessagingTemplate 方法)3、使用 JSR356 定义的 WebSocket 规范实现个人认为使用 JSP356 的 WebSocket 规范最为简单。2.1 JSR356定义的 WebSocket 规范首先引入依赖:springboot <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-websocket</artifactId> </dependency><dependency> <groupId>org.springframework</groupId> <artifactId>spring-websocket</artifactId> <version>4.3.10.RELEASE</version> </dependency> <dependency> <groupId>javax</groupId> <artifactId>javaee-api</artifactId> <version>7.0</version> <scope>provided</scope> </dependency>JSR356 的 WebSocket 规范使用 javax.websocket.* 的 API,可以将一个普通 Java 对象(POJO)使用 @ServerEndpoint 注释从而作为 WebSocket 服务器的端点,此时客户端浏览器已经可以对 WebSocket 客户端 API 发起 HTTP 长连接了,如:@ServerEndpoint(value="/websocket/commodity/{userId}", configurator = SpringConfigurator.class)注释中的参数 value 表示的是 url 路径与 @RequestMapping 注释中的 value 类似,而他表示的是前端创建 WebSocket 对象需要传入的 ws 协议的路径。当中的 {userId} 参数作为当前客户的识别 ID 号,此时客户端传入的 url 应该为:ws://[Server端IP或域名]:[Server端口]/项目/websocket/commodity/{userId}注意:如果在要进行对象注入,就必须加上 configurator = SpringConfigurator.class。参考【spring boot websocket 的使用 - CSDN App】http://t.csdn.cn/XUSQf
2025年04月03日
5 阅读
0 评论
0 点赞
1
...
15
16
17