JAVA多线程
上兵伐眸
这个作者很懒,什么都没留下…
展开
-
JAVA多线程10——线程池
JDK 5.0起提供了线程池相关API:ExecutorService 和 Executors ExecutorService:真正的线程池接口。常见子类ThreadPoolExecutor void execute(Runnable command) :执行任务/命令,没有返回值,一般用来执 行Runnable <T> Future<T> submit(Callable<T> task):执行任务,有返回值,一般又来执行 Callable void...原创 2022-02-18 23:48:02 · 182 阅读 · 0 评论 -
JAVA多线程9——生产者消费者问题
一、管程法二、三、原创 2022-02-18 23:30:31 · 330 阅读 · 0 评论 -
JAVA多线程——抢票设置错误修正(线程同步之后,只有第一个线程能够抢到票)
需要在循环处,让抢到票的线程sleep10毫秒即可public class TestTicket { public static void main(String[] args) { GetTicket getTicket = new GetTicket(); new Thread(getTicket,"小王").start(); new Thread(getTicket,"小李").start(); new Thread(get原创 2022-02-18 22:39:52 · 432 阅读 · 0 评论 -
JAVA多线程01——初始线程,线程的三种创建方式
一、程序、进程、线程程序。程序是指令和数据的有序集合,其本身没有任何运 行的含义,是一个静态的概念。 进程则是执行程序的一次执行过程,它是一个动态的概念。是系统资源分配的单位通常在一个进程中可以包含若干个线程,当然一个进程中至少有一个线程,不然没 有存在的意义。 线程是CPU调度和执行的的单位。普通方法调用和多线程二、线程的三种创建方式1、继承Thread类//创建线程方法一:继承Thread,重写run方法,通过strat开启线程public class TestThrea.原创 2022-02-17 14:39:16 · 391 阅读 · 0 评论 -
JAVA多线程02——模拟龟兔赛跑
//模拟归途赛跑public class TestThread5 implements Runnable{ private static String winner; @Override public void run() { for (int i = 1; i <= 100; i++) { //兔子每十步休息2毫秒 if(Thread.currentThread().getName().equals("兔.原创 2022-02-17 15:20:28 · 297 阅读 · 0 评论 -
JAVA多线程03——静态代理、Lambda简化函数式接口的实现
一、静态代理//测试静态代理//真实对象和代理对象都要实现同一个接口 ****//代理对象要代理角色//代理对象做真实角色做不了的角色public class StaticProxy { public static void main(String[] args) { WedingCompany wedingCompany = new WedingCompany(new Person("张三")); wedingCompany.HappyMarry(原创 2022-02-17 17:33:27 · 220 阅读 · 0 评论 -
JAVA多线程08——死锁、Lock锁
CopyOnWriteArrayList是:java.util.concurrent包下的安全的数组public class Test { public static void main(String[] args) { CopyOnWriteArrayList<String> List = new CopyOnWriteArrayList<>(); for (int i = 0; i < 5000; i++) { .原创 2022-02-18 21:43:29 · 239 阅读 · 0 评论 -
JAVA多线程07——线程同步******
多个线程操作同一个资源 并发 : 同一个对象被多个线程同时操作 队列和锁由于同一进程的多个线程共享同一块存储空间 , 在带来方便的同时,也带来了访问 冲突问题 , 为了保证数据在方法中被访问时的正确性 , 在访问时加入 锁机制 synchronized ,一个线程持有锁会导致其他所有需要此锁的线程挂起 ; 在多线程竞争下 , 加锁 , 释放锁会导致比较多的上下文切换 和 调度延时,引 起性能问题 ; 如果一个优先级高的线...原创 2022-02-18 21:08:20 · 279 阅读 · 0 评论 -
JAVA多线程06——守护线程(daemon)
线程分为用户线程和守护线程 虚拟机必须确保用户线程执行完毕 虚拟机不用等待守护线程执行完毕 如,后台记录操作日志,监控内存,垃圾回收等待god.setDaemon(true);//设置守护线程//测试守护线程public class TestDaemon { public static void main(String[] args) { God god = new God(); god.setDaemon(true);..原创 2022-02-18 19:48:03 · 445 阅读 · 0 评论 -
JAVA多线程04——线程状态、线程方法
一、线程的五大状态1、Thread t = new Thread() 线程对象一旦创建就进入到 了创建状态。2、当调用start()方法,线程立即 进入就绪状态,但不意味着 立即调度执行。3、就绪状态通过cpu调度进入运行状态,线程才真正 执行线程体的代码块。4、当调用sleep,wait 或同步 锁定时,线程进入阻塞状态, 就是代码不往下执行,阻塞 事件解除后,重新进入就绪 状态,等待cpu调度执行。 5、线程中断或者结束,一旦进 入死亡状态,就不能再次启动。二、线程方法原创 2022-02-17 19:40:24 · 312 阅读 · 0 评论 -
JAVA多线程05——线程优先级
一、线程优先级Java提供一个线程调度器来监控程序中启动后进入就绪状态的所有线程,线程调度 器按照优先级决定应该调度哪个线程来执行。使用以下改变或获取优先级 getPriority() . setPriority(int xxx) 线程的优先级用数字表示,范围从1~10. Thread.MIN_PRIORITY = 1; Thread.MAX_PRIORITY = 10; Thread.NORM_PRIORITY = 5 优先级低只是意味着获得调度...原创 2022-02-18 19:37:55 · 219 阅读 · 0 评论