Java线程
汤高
喜欢开源的框架技术、乐于研究其底层源码,把个人从学习到工作中用到的所有技术梳理总结,也分享给所有爱学习新技术的朋友们,相互交流,一起进步
展开
-
多线程带来的数据不一致
解决:两种方法 1同步快import java.util.Random;public class Test13 { /** * @param args * 多线程带来的数据不一致 * 解决办法 同步机制 1 同步块 2 同步方法(不推荐) */ public static void main(String[] args) {原创 2015-11-04 21:26:12 · 1773 阅读 · 2 评论 -
生产者和消费者
用到 wait()、notify()/notifyAll()方法 public class Test15 { /** * @param args */ public static void main(String[] args) { AppleBox ab=new AppleBox(); Producer p=new Produc原创 2015-11-04 21:29:49 · 767 阅读 · 2 评论 -
线程的创建
创建一个Java线程常见的有两种方式:1.继承Thread类 两种表示方法: (1).外部类import java.util.Date;public class Test1 { public static void main(String[] args) { //启动新线程 来完成输出时间的操作 Mytime mt=new Mytime(原创 2015-11-04 21:14:57 · 549 阅读 · 0 评论 -
程序、进程、线程的关系
1.程序: 一段静态的代码,一组指令的有序集合,它本身没有任何运行的含义,它只是一个静态的实体,是应用软件执行的蓝本。2.进程: 是程序的一次动态执行,它对应着从代码加载,执行至执行完毕的一个完整的过程,是一个动态的实体,它有自己的生命周期。它因创建而产生,因调度而运行,因等待资源或事件而被处于等待状态,因完成任务而被撤消。反映了一个程序在一定的数据 集上运行的全部动态过程。通原创 2015-11-04 21:05:15 · 764 阅读 · 0 评论 -
线程的分类
1.主线程 main方法。2.精灵线程 特点: (1)设置为精灵线程的方法:setDaemon(true); (2)其他线程结束了 精灵线程也完了 (3)又叫守护线程或者后台线程import java.io.File;import java.io.IOException;import java.net.URL;import java.util.Date;public class T原创 2015-11-04 21:21:01 · 1512 阅读 · 0 评论 -
线程的其他特征
睡眠://使用sleep控制线程运行public class Test9 { /** * @param args */ public static void main(String[] args) { new Thread(new MyTask()).start(); new Thread(new MyTask2()).start原创 2015-11-04 21:23:33 · 676 阅读 · 1 评论 -
死锁
什么是死锁: 是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁死锁产生的四个条件 (1) 互斥条件:一个资源每次只能被一个进程使用。 (2) 请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。 (3) 不剥夺条件:进程已获得的资源,在末使用完之前,不能强行剥夺原创 2015-11-04 21:28:01 · 922 阅读 · 11 评论 -
线程池
线程池的作用:线程池作用就是限制系统中执行线程的数量。 根据系统的环境情况,可以自动或手动设置线程数量,达到运行的最佳效果;少了浪费了系统资源,多了造成系统拥挤效率不高。用线程池控制线程数量,其他线程排队等候。一个任务执行完毕,再从队列的中取最前面的任务开始执行。若队列中没有等待进程,线程池的这一资源处于等待。当一个新任务需要运行时,如果线程池中有等待的工作线程,就可以开始运行原创 2015-11-11 19:19:50 · 751 阅读 · 3 评论