多线程

本文介绍了Java多线程的关键操作,如线程中断与停止,并深入探讨了线程共享变量的可见性问题及volatile关键字的作用。此外,文章还对比了ConcurrentHashMap与Hashtable的区别,并通过代码示例详细解析了死锁的产生条件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

 

 

java多线程操作方法:

ta.interrupt();

ta.stop() 杀死线程对象ta

 

4 线程共享变量

4.1 控制线程共享变量可见关键字volatile

Java提供了volatile关键字来保证可见性。

当一个共享变量被volatile修饰时,它会保证修改的值会立即被更新到主存,当有其他线程需要读取时,它会去内存中读取新值。

面试题:

ConcurrentHashMap和Hashtable区别?

答:ConcurrentHashMap 同步容器类是Java 5 增加的一个线程安全的哈希表。对

与多线程的操作,介于 HashMap 与 Hashtable 之间。内部采用“锁分段”

机制替代 Hashtable 的独占锁。进而提高性能。

 

4.3 消费者和生产者模式

线程间通信机制

A:锁死现象?

面试:死锁条件是什么?

答:理解产生死锁的必要条件--以下四个条件同时具备:互斥条件、不可抢占条件、占有且申请条件、循环等待条件。

死锁代码?

public class DeadLock implements Runnable{

    static Object objA=new Object();

    static Object objB=new Object();

    @Override

    public void run() {

        String tname = Thread.currentThread().getName();

        if(tname.equals("t1")){

            synchronized (objA){

                System.out.println("t1锁定A....");

                synchronized (objB){

                    System.out.println("t1锁定B....");

                }

            }

            System.out.println("t1结束...");

        }else{

            synchronized (objB){

                System.out.println("t2锁定B....");

                synchronized (objA){

                    System.out.println("t2锁定A....");

                }

            }

            System.out.println("t2结束...");

        }

    }

 

    public static void main(String[] args) {

        DeadLock dk=new DeadLock();

        Thread t1=new Thread(dk,"t1");

        Thread t2=new Thread(dk,"t2");

        try {

            Thread.sleep(1000);

        } catch (InterruptedException e) {

            e.printStackTrace();

        }

        t1.start();

        t2.start();

    }

}

锁:

受到synchronized保护的程序代码块和方法中,要访问的对象属性必须设定为private,因为如果不设定为private,那么就可以用不同的方式来访问它,这样就达不到保护的效果了

死锁:两个线程,彼此在等待对方占据的锁
 锁的归还几种方式:基本上执行完同步的程序代码后,锁就会自动归还;
1用break语句跳出同步的语句块,不过这对于写在方法声明的synchronized没有作用;
2遇到return语句;
3遇到了异常;

 

评论 57
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一条coding

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值