Welcome, NewComer

Java - 多线程

三种实现方式

常用成员方法

1.线程name默认“Thread-”+"序号"
2.可以通过重写构造方法在创建时给线程命名

线程的生命周期与状态


同步代码块

  • 格式
synchronized(锁对象){
  操作共享数据的代码
}

1.锁对象随机,但只要是有static修饰的唯一对象,一般写本类class文件,如MyThread.class
2.必须写在循环内部

同步方法

修饰符 synchronized 返回值类型 方法名(方法参数) {...}
  • 特点1:同步方法是锁住方法里面所有的代码
  • 特点2:锁对象不能自己指定
    • 非静态:this
    • 静态:当前类的字节码文件对象

lock锁

生产者和消费者(等待唤醒机制)

主要用wait和notifyAll

阻塞队列方式实现

  • ArrayBlockingQueue
    底层数组,有界
  • LinkedBlockingQueue
    底层链表,最大为int最大值

put数据时:放不进去,会等着,也叫做阻塞。
take数据时:取出第一个数据,取不到会等着,也叫做阻塞

线程池


        //1.获取线程池对象
//        ExecutorService pool1 = Executors.newCachedThreadPool();//无上限
        ExecutorService pool1 = Executors.newFixedThreadPool(3);//有上限

        //2.提交任务
        pool1.submit(new MyRunnable());
        pool1.submit(new MyRunnable());
        pool1.submit(new MyRunnable());
        pool1.submit(new MyRunnable());
        pool1.submit(new MyRunnable());

        //3.销毁线程池(一般不销毁)
//        pool1.shutdown();

自定义线程池



posted @ 2024-08-11 10:59  Through287  阅读(28)  评论(0)    收藏  举报