java_多线程
nuurgg
这个作者很懒,什么都没留下…
展开
-
多线程之生产者消费者问题
/** * 生产者与消费者问题 * 涉及到了线程通信,线程同步,线程安全问题分析: * 1.是否是多线程问题:是,生产者线程与消费者线程 * 2.是否有共享数据:是 * 3.是否有安全问题:是 * 4.需要考虑如何解决线程安全问题:是 */public class Product { public static void main(String[] args) { Clerk clerk = new Clerk(); Producer producer = new P原创 2020-11-05 15:59:45 · 62 阅读 · 0 评论 -
线程通信
/** * * 线程通信的例子:两个线程交替打印100以内的数 * wait会释放锁,阻塞当前线程 * notify一旦执行此方法,就会唤醒被wait的线程,如果有多个就会唤醒优先级高的 * sleep不会释放锁 ********************************************************************* *必须放入同步代码块里面或同步方法里面 *wait方法的调用者必须是当前同步代码块或者方法同步监视器 *定义在Object中 * **原创 2020-11-05 15:58:02 · 61 阅读 · 0 评论 -
java多线程安全实现的方式之Lock锁实现
/** * 1.synchronized 与 Lock 的异同 * 两者都可以解决线程安全问题 * synchronized机制在执行完相应的同步代码块之后自动的释放同步监视器 * Lock需要手动的启动同步,同时结束同步也需要手动实现 * * * ************************************************************** * 如何解决线程的安全问题 * 1.同步代码块,同步方法,Lock * */public class Loc原创 2020-11-05 15:56:26 · 174 阅读 · 0 评论 -
java多线程实现的其他方法
3.Callable接口实现/** * * 创建多线程的后两种方式 * 1.实现Callable,jdk5.0新增 * call方法有返回值, * 可以抛出异常, * 支持泛型 * *///创建一个实现Callable的实现类class NumThread implements Callable{ //实现接口中的方法 @Override public Object call() throws Exception { int sum = 0; //原创 2020-11-05 15:53:47 · 80 阅读 · 0 评论 -
java多线程锁的实现
1.使用同步代码块实现1.1在继承Thread的方式下实现public class windows extends Thread { private static int ticket = 100; @Override public void run() { while (true) { synchronized (windows.class) { if (ticket > 0) {原创 2020-11-04 20:40:11 · 200 阅读 · 2 评论 -
java多线程创建的两种办法
第一种方式:继承Thread类//1.创建一个继承于Thread类的子类public class myThread extends Thread { //2.重写run方法--将此线程执行的操作声明在run()中 public void run() { for (int i = 0; i < 100; i++) { if (i % 2 == 0) { System.out.println(Thread.curr原创 2020-11-03 21:42:06 · 124 阅读 · 0 评论