知识大全 Java多线程处理方式

Posted

篇首语:位卑未敢忘忧国,事定犹须待盖棺。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Java多线程处理方式相关的知识,希望对你有一定的参考价值。

Java多线程处理方式  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

    死锁        多线程编程在实际的网络程序开发中 在客户端程序实现中使用的比较简单 但是在服务器端程序实现中却不仅是大量使用 而且会出现比客户端更多的问题 另外一个容易在服务器端出现的多线程问题是 死锁 死锁指两个或两个以上的线程为了使用某个临界资源而无限制的等待下去 还是以前面卫生间的例子来说明死锁 例如两个人都同时到达卫生间 而且两个人都比较礼貌 第一个人和第二个人说 你先吧 第二个人和第一个人说 你先吧 这两个人就这样一直在互相礼让 谁也不进入 这种现象就是死锁 这里的两个人就好比是线程 而卫生间在这里就是临界资源 而由于这两个线程在一直谦让 谁也不使用临界资源 死锁不仅使程序无法达到预期实现的功能 而且浪费系统的资源 所以在服务器端程序中危害比较大 在实际的服务器端程序开发中 需要注意避免死锁 而死锁的检测比较麻烦 而且不一定每次都出现 这就需要在测试服务器端程序时 有足够的耐心 仔细观察程序执行时的性能检测 如果发现执行的性能显著降低 则很可能是发生了死锁 然后再具体的查找死锁出现的原因 并解决死锁的问题 死锁出现的最本质原因还是逻辑处理不够严谨 在考虑时不是很周全 所以一般需要修改程序逻辑才能够很好的解决死锁         线程优先级        在日常生活中 例如火车售票窗口等经常可以看到 XXX优先 那么多线程编程中每个线程是否也可以设置优先级呢?在多线程编程中 支持为每个线程设置优先级 优先级高的线程在排队执行时会获得更多的CPU执行时间 得到更快的响应 在实际程序中 可以根据逻辑的需要 将需要得到及时处理的线程设置成较高的优先级 而把对时间要求不高的线程设置成比较低的优先级 在Thread类中 总计规定了三个优先级 分别为         l MAX_PRIORITY 最高优先级        l NORM_PRIORITY 普通优先级 也是默认优先级        l MIN_PRIORITY 最低优先级        在前面创建的线程对象中 由于没有设置线程的优先级 则线程默认的优先级是NORM_PRIORITY 在实际使用时 也可以根据需要使用Thread类中的setPriority方法设置线程的优先级 该方法的声明为 public final void setPriority(int newPriority)         假设t是一个初始化过的线程对象 需要设置t的优先级为最高 则实现的代码为 t setPriority(Thread MAX_PRIORITY) 这样 在该线程执行时将获得更多的执行机会 也就是优先执行 如果由于安全等原因 不允许设置线程的优先级 则会抛出SecurityException异常 下面使用一个简单的输出数字的线程演示线程优先级的使用 实现的示例代码如下         package priority;        public class TestPriority         public static void main(String[] args)         PrintNumberThread p = new PrintNumberThread( 高优先级 )         PrintNumberThread p = new PrintNumberThread( 普通优先级 )         PrintNumberThread p = new PrintNumberThread( 低优先级 )         p setPriority(Thread MAX_PRIORITY)         p setPriority(Thread NORM_PRIORITY)         p setPriority(Thread MIN_PRIORITY)         p start()         ) p start()         package priority;        /* 输出数字的线程*/        public class PrintNumberThread extends Thread         String name;         public PrintNumberThread(String name)        this name = name;        public void run()        try        for(int i = ;i < ;i++)        System out println(name + : + i)                 catch(Exception e)         在该示例程序 PrintNumberThread线程实现的功能是输出数字 每次数字输出之间没有设置时间延迟 在测试类TestPriority中创建三个PrintNumberThread类型的线程对象 然后分别设置线程优先级是最高 普通和最低 接着启动线程执行程序 从执行结果可以看出高优先级的线程获得了更多的执行时间 首先执行完成 而低优先级的线程由于优先级较低 所以最后一个执行结束 其实 对于线程优先级的管理主要由系统的线程调度实现 较高优先级的线程优先执行 所以可以通过设置线程的优先级影响线程的执行         总结        关于多线程的基础知识就介绍这么多 在本章中介绍了线程的概念 线程的实现方式以及使用多线程时会遇到的问题以及解决办法 而需要建立多线程的概念 也就是并发编程的概念还需要进行比较多的练习 理解多线程的概念并熟悉多线程的编程 而关于多线程编程的高级知识 如线程组等则可以在熟悉了线程的基本概念以后再进行更加深入的学习 cha138/Article/program/Java/hx/201311/26206

相关参考

知识大全 java多线程中的异常处理

  在java多线程程序中所有线程都不允许抛出未捕获的checkedexception也就是说各个线程需要自己把自己的checkedexception处理掉这一点是通过javalangRunnable

知识大全 Java多线程问题及处理(笔记)

Java多线程问题及处理(笔记)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  死锁  多线程编

知识大全 Java多线程处理三大讲解

Java多线程处理三大讲解  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!死锁  

知识大全 Java多线程调试如何完成信息输出处理

Java多线程调试如何完成信息输出处理  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Java多

知识大全 多线程Java程序中常见错误的巧处理

多线程Java程序中常见错误的巧处理  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 在几乎所有编程

知识大全 多线程编程您不知道的5件事

   多线程编程向来不容易但很少有Java?开发人员能够忽视多线程编程和支持它的Java平台库我们临时学习线程在需要时向我们的工具箱添加新的技巧和技术以这种方式构建和运行

知识大全 多线程的批量线程同步处理方案

JAVA认证:多线程的批量线程同步处理方案  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  多线程

知识大全 java间的线程通信

  不同线程间进行通信通常有两种简单方法  方法一通过访问共享变量的方式(注需要处理同步问题)  方法二通过管道流  其中方法一有两种实现方法即  方法一a)通过内部类实现线程的共享变量  代码如下 

知识大全 Java中限时线程回调方式的实现

Java中限时线程回调方式的实现  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  线程回调方式我们

知识大全 Java的多线程-实现多线程及线程的同步

Java的多线程-实现多线程及线程的同步  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  一.实现