package com.atguigu.java; /** *//** * 使用同步代码块解决继承Thread类的方式的线程安全问题 * * 例子:创建三个窗口卖票,总票数为100张.使用继承Thread类的方式 * * 说明:在继承Thread类创建多线程的方式中,慎用this充当同步监视器,考虑使用当前类充当同步监视器. * */class Window2 extends Thread{ private static int ticket = 100; private static Obje…
package cn.itcast_02; /* * 该类要重写run()方法,为什么呢? * 不是类中的所有代码都需要被线程执行的. * 而这个时候,为了区分哪些代码能够被线程执行,java提供了Thread类中的run()用来包含那些被线程执行的代码. */ public class MyThread extends Thread { @Override public void run() { // 自己写代码 // System.out.println("好好学习,天天向上");…
1. 继承Thread类 创建线程类: package cn.itcast_02; /* * 该类要重写run()方法,为什么呢? * 不是类中的所有代码都需要被线程执行的. * 而这个时候,为了区分哪些代码能够被线程执行,java提供了Thread类中的run()用来包含那些被线程执行的代码. */ public class MyThread extends Thread { @Override public void run() { // 自己写代码 // System.out.printl…
/** * 使用同步方法处理继承Thread类的方式中的线程安全问题 * */class Window4 extends Thread { private static int ticket = 100; @Override public void run() { while (true) { show(); } } private static synchronized void show(){//同步监视器:Window4.class //private synchronized void…
/*多线程的安全问题1.为什么会出现安全问题?因为程序在运行时,会出现一个线程在判断条件满足后,具备了执行资格,但没有运行代码后一个线程也判断了条件,也具备了执行资格,后一个线程运行了代码,但这时候,线程运行的条件不满足了这时候,就出现了安全问题 2.实现接口线程的方法不能抛出异常! */ /*运行情况通过分析,发现,打印出0,-1,-2等错票. 多线程的运行出现了安全问题 问题的原因?  当多条语句在操作同一线程共享数据时,一个线程对多条语句只执行了一部分,还没有执行完  另一个线程参与进来,…
/** * 例子:创建三个窗口卖票,总票数为100张.使用实现Runnable接口的方式 * * 1.问题:卖票过程中,出现了重票.错票 -->出现了线程的安全问题 * 2.问题出现的原因:当某个线程操作车票的过程中,尚未操作完成时,其他线程参与进来,也操作车票. * 3.如何解决:当一个线程a在操作ticket的时候,其他线程不能参与进来.直到线程a操作完ticket时,其他 * 线程才可以开始操作ticket.这种情况即使线程a出现了阻塞,也不能被改变. * * * 4.在Java中,我们通…
java 通过继承Thread类实现多线程很多简单: 只需要重写run方法即可. 比如我们分三个线程去京东下载三张图片: 1.先写个下载类: 注意导入CommonsIO 包 public class WebDownLoad { public void download(String url, String name) { try { FileUtils.copyURLToFile(new URL(url), new File(name)); } catch (MalformedURLExcept…
知识点:之前第一节介绍创建线程的方法是:通过threading.Thread(target=函数名不要加括号)创建一个对象,通过对象调用start方法创建并启动线程:                                                                       这一节介绍另外一种创建线程的方法:写一个子类,继承Thread类,里面定义一个run方法即可通过该子类创建一个线程 代码如下,解释看注解: #!/usr/bin/env python # co…
JAVA静态代码块会在类被载入时自己主动运行? 非常多Java开发人员的思想,被这个思想深深的轮奸了n遍,传播这个错误思想的博客,在网上一堆,越来越多的人被轮奸. 如:http://blog.csdn.net/leeyu35/article/details/7755304 那么我们程序来证明这句话是错误的: class MyClass1 { static {//静态块 System.out.println("static block "); } } public class Main…
JAVA静态代码块会在类被加载时自动执行? 一.先看Java静态方法,静态变量 http://www.cnblogs.com/winterfells/p/7906078.html 静态代码块 在类中,可以将某一块代码声明为静态的,这样的程序块叫静态初始化段.静态代码块的一般形式如下: static { 语句序列 } public class staticBlock{ //定义一个普通的main()方法 public static void main(String args[]){ System.…