09 2020 档案
摘要:public class Demo01Runnable { public static void main(String[] args) { //创建runnable接口的实现对象 RunnableImpl run=new RunnableImpl(); //创建Thread对象,构造方法中传递Ru
阅读全文
摘要:线程池JDK1.5之后提供的 java.util.concurrent.Executors:线程池的工厂类,用来生成线程池 Executors有个静态方法: static ExecutorService newFixedThreadPool(int nThreads) 创建一个可重用固定线程数的线程
阅读全文
摘要:进入到TimeWaiting(计时等待)有两种方法 1.使用sleep方法,在毫秒值结束后,线程睡醒进入到Runnable/blocked状态 2.使用wait方法,wait方法如果在毫秒值结束后,还没有被notify唤醒,就会自动醒来,线程睡醒进入到Runnable/blocked状态 唤醒方法:
阅读全文
摘要:等待唤醒案例:线程之间的通信 创建一个顾客线程(消费者):告知老板要的包子的种类和数量,调用wait方法,放弃cpu执行,进入waiting状态(无限等待) 创建一个老板线程(生产者):花了5秒做包子,做好了包子之后,调用notify方法,唤醒顾客吃包子 注意事项: 顾客和老板线程必须使用同步代码块
阅读全文
摘要:java.util.concurrent.locks lock接口中的方法: void lock()获取锁 void unlock()释放锁 使用步骤: java.util.concurrent.locks.ReentrantLock接口使用步骤:1.在成员位置创建ReentrantLock对象2.
阅读全文
摘要:解决线程安全问题的第二种方法:使用同步方法 使用步骤: 1.把访问了共享数据的代码取出来,放到一个方法中 2.在方法上添加synchronized修饰符 格式:定义方法的格式 修饰符synchronized(锁对象){ 可能出现线程安全问题的代码(访问共享数据的代码) } public class
阅读全文
摘要:同步代码块Synchronized(锁对象){可能出现重写爱情问题的代码 } 1.通过代码块中的锁对象,可以使用任意对象 2.但必须保证多个线程使用的锁对象是同一个 3.锁对象作用: 把同步代码块锁住只让一个线程执行 //模拟卖票 //创建三个进程,同时开启,对共享的票进行出售 public cla
阅读全文
摘要:匿名内部类: 把子类继承父类,重写父类的方法,创建子类对象合一步完成 把实现实现接口,重写接口中的方法,创建实现类对象合成一步完成 匿名内部类的最终产物:子类/实现类对象,而这个类没有名字 格式: new 父类/接口(){重写父类或者接口中的方法} public class Demo01InnerC
阅读全文
摘要:实现Runnable接口创建多线程程序的好处: 1.避免单继承的局限性 一个类只能继承一个类(一个人只有一个亲爹)类继承了Thread类就不继承其他的类 实现了Runnable接口,还可以继承其他的类,实现其他的接口 2.增强程序的拓展性,降低了程序的耦合性 实现runnable接口的方式,把设置线
阅读全文
摘要:Thread(Runnable target) 分配新的 Thread 对象。 实现步骤: 1.创建一个Runnable 接口的实现类。 2.在实现类中重写runnable接口的run方法,设置线程任务。 3.创建一个runnable接口的实现对象 4.创建Thread类对象,构造方法中传递Runn
阅读全文
摘要:获取线程的名称: 1.使用thread类中的方法getname() String getname()返回该线程的名称。 2.可以获取到当前正在执行的线程,使用线程中的getname()获取线程的名称 static thread currentThread()返回当前正在执行的线程对象的引用。 mai
阅读全文
摘要:main方法的程序: public class Demo01Tread { public static void main(String[] args) { MyThread mt=new MyThread(); mt.start(); for (int i = 0; i <20 ; i++) {
阅读全文

浙公网安备 33010602011771号