- 博客(10)
- 收藏
- 关注
原创 死锁产生的原因
一、什么是死锁? 如果一个进程集合里面的每个进程都在等待这个集合中的其他一个进程(包括自身)才能继续往下执行,若无外力他们将无法推进,这种情况就是死锁,处于死锁状态的进程称为死锁进程 二、死锁产生的原因? 1.因竞争资源发生死锁 现象:系统中供多个进程共享的资源的数目不足以满足全部进程的需要时,就会引起对诸资源的竞争而发生死锁现象 (1)可剥夺资源和不可剥夺资源:可剥夺资源是指某进程在获得该类资源...
2018-10-07 16:56:53 499
原创 CountDownLatch用法
countDown(),使得计数器-1; await() 方法,当计数器不为0时,则调用该方法的线程阻塞;当计数器为0时,可以唤醒等待的一个或者全部线程。 package com.sjm import java.util.concurrent.CountDownLatch; import java.util.concurrent.ExecutorService; import java.util....
2018-10-07 14:53:30 191
原创 线程安全同步代码(卖票)
public class RunnableTest implements Runnable { private int tick = 60; @Override public void run() { while (true) { synchronized (this) { if (tick == 0) { break...
2018-10-07 14:47:50 156
原创 多线程的经典实例
import java.io.*; //多线程编程 public class MultiThread { public static void main(String args[]) { System.out.println(“我是主线程!”); //下面创建线程实例thread1 ThreadUseExtends thread1 = new ThreadUseExtends(); //创建thr...
2018-10-07 14:43:28 471
原创 子父线程问题
创建子父线程,保证子线程执行5次后,父线程执行3次 如此循环10次! public class Test { private boolean subFlag=true;//判断是主线程还是子线程 如果为true为子线程 false为主线程 public synchronized void sub(int loop){ // 如果子线程不可执行,则当前线程等待 if(!subFlag...
2018-10-07 14:41:39 308
转载 线程同步
1、synchronized关键字的作用域有二种: 1)是某个对象实例内,synchronized aMethod(){}可以防止多个线程同时访问这个对象的synchronized方法(如果一个对象有多个synchronized方法,只要一个线程访问了其中的一个synchronized方法,其它线程不能同时访问这个对象中任何一个synchronized方法)。这时,不同的对象实例的synchron...
2018-10-07 14:34:27 104
原创 线程状态转换
1、新建状态(New):新创建了一个线程对象。 2、就绪状态(Runnable):线程对象创建后,其他线程调用了该对象的start()方法。该状态的线程位于可运行线程池中,变得可运行,等待获取CPU的使用权。 3、运行状态(Running):就绪状态的线程获取了CPU,执行程序代码。 4、阻塞状态(Blocked):阻塞状态是线程因为某种原因放弃CPU使用权,暂时停止运行。直到线程进入就绪状态,...
2018-10-07 14:23:31 109
转载 常见线程名词解释
主线程:JVM调用程序main()所产生的线程。 当前线程:这个是容易混淆的概念。一般指通过Thread.currentThread()来获取的进程。 后台线程:指为其他线程提供服务的线程,也称为守护线程。JVM的垃圾回收线程就是一个后台线程。用户线程和守护线程的区别在于,是否等待主线程依赖于主线程结束而结束 前台线程:是指接受后台线程服务的线程,其实前台后台线程是联系在一起,就像傀儡和幕后操纵者...
2018-10-07 14:19:45 556
原创 Thread和Runnable的区别
如果一个类继承Thread,则不适合资源共享。但是如果实现了Runnable接口的话,则很容易的实现资源共享。 实现Runnable接口比继承Thread类所具有的优势: 1):适合多个相同的程序代码的线程去处理同一个资源 2):可以避免java中的单继承的限制 3):增加程序的健壮性,代码可以被多个线程共享,代码和数据独立 4):线程池只能放入实现Runnable或callable类线程,不能直...
2018-10-07 14:14:47 129
原创 Java关于TCP和UDP的Socket编程方法
java为TCP和UDP两种通信协议提供了相应的Socket编程类,这些类存放在java.net包中。与TCP对应的是服务器端的ServerSocket和客户端的Socket;与UDP对应的是DatagramSocket. 基于TCP协议的Socket编程的主要步骤: TCP server: 1.构建一个ServerSocket实例,指定本地的端口,用于监听其连接请求。 2.调用socket的ac...
2018-10-05 12:25:52 378
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人