多线程、反射
来源:互联网 发布:网络兼职招聘 编辑:程序博客网 时间:2024/06/14 20:00
【目录】
线程
实现线程
死锁
反射
注解
多线程:
在Java思想中,将并发完成的每一件事情称为线程。java语言提供了并发机制,程序猿可以在程序中执行多个线程,每一个线程完成一个功能,并与其他线程并发执行,这种机制称为多线程。
一个简单的线程代码
package com.day08.thread;public class MyThread extends Thread { @Override public void run() { System.out.println("路漫漫其修远今,吾将上下而求索。"); }}package com.day08.thread;public class Test { public static void main(String[] args) { //java的主线程 MyThread my = new MyThread(); System.out.println("线程开始执行"); my.start();//在进程中申请独立的运行空间 System.out.println("线程结束执行"); }}
优势:
系统空转时间减少
共享内存
多个任务同时进行
and so on……
实现多线程的两种方式:
1、继承java.lang.Thread类
public class MyThread extends Thread { public MyThread() { } public MyThread(String name) { super(name); } private static int ticket = 100;//注意将ticket装成静态的才能共享! private String lock = "asd"; @Override public void run() { while (ticket > 0) { synchronized (lock) { if (ticket > 0) { System.out.println(getName() + "卖出了第" + ticket + "张票"); ticket--; } } try { Thread.sleep(50); } catch (InterruptedException e) { e.printStackTrace(); } } }}public class Test { public static void main(String[] args) { MyThread m1 = new MyThread("售票员1"); MyThread m2 = new MyThread("售票员2"); MyThread m3 = new MyThread("售票员3"); MyThread m4 = new MyThread("售票员4"); m1.start(); m2.start(); m3.start(); m4.start();
2、实现java.lang.Runnable接口
public class MyRunnable implements Runnable { private int ticket = 100; private String s = "lock";// 定义一个锁 @Override public void run() { while (ticket > 0) { synchronized (s) {// 设置锁 if (ticket > 0) {//进来一个,上锁,其它的等待。 //当最后一张卖出,还有要进来的 所以判断票数 System.out.println(Thread.currentThread().getName() + "卖出了票号" + ticket); ticket--; } } try { Thread.sleep(500); } catch (InterruptedException e) { e.printStackTrace(); } } }}public class Test { public static void main(String[] args) { MyRunnable runnable = new MyRunnable(); Thread m1 = new Thread(runnable, "售票员1"); Thread m2 = new Thread(runnable, "售票员2"); Thread m3 = new Thread(runnable, "售票员3"); Thread m4 = new Thread(runnable, "售票员4"); m2.setPriority(9);//优先级,在这里让m2优先售票 m1.start(); m2.start(); m3.start(); m4.start(); }}
这里是较为详细的地址【http://www.cnblogs.com/rollenholt/archive/2011/08/28/2156357.html】
死锁
反射
Student类
public class Student { private int age; private String name; private String clazz; public int getAge() { return age; }// public void setAge(int age) {// this.age = age;// } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getClazz() { return clazz; } public void setClazz(String clazz) { this.clazz = clazz; }}import java.lang.reflect.Field;public class Test { public static void main(String[] args) { Class<Student> clazz = Student.class;// //Field[] fields = clazz.getFields();// 以数组形式返回所有公共属性// Field[] fields = clazz.getDeclaredFields();//以数组形式返回所有属性// for (Field fie : fields) {// System.out.println(fie.getName());// 返回属性名称// System.out.println(fie.getType().getName());// 返回属性的类型名称// System.out.println(fie.getModifiers());// 反悔属性修饰符的整数形式// } Student zhangsan = new Student(); try { Field age = clazz.getDeclaredField("age");//得到指定名称的属性AGE age.setAccessible(true);//取消java访问修饰符检查 age.set(zhangsan, 18);//更改对象zhangsan的age属性为18 age.setAccessible(false);//取消检查 System.out.println(zhangsan.getAge());//输出对象zhangsan的age值 } catch (NoSuchFieldException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (SecurityException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IllegalArgumentException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IllegalAccessException e) { // TODO Auto-generated catch block e.printStackTrace(); } }}
动态展示反射案例:
注解
0 0
- 多线程、反射
- 多线程和反射
- 注解,反射,多线程,死锁
- Class类反射、多线程
- Java Basic5(反射,多线程)
- 多线程锁和反射的再次理解
- Android消息反射机制(多线程)
- java的泛型和反射,多线程
- 效率问题,Linq查询/多线程/反射/装箱相关
- Java高新技术笔记:反射、多线程、泛型、枚举、javaBean、代理
- 黑马程序员——JAVA基础——多线程、反射
- javaSE(24)(多线程、网络编程、反射)
- IO流、多线程、网络、XML以及反射的基本知识
- Java复习笔记+经验总结-06 多线程 泛型 反射
- 黑马程序员-- TCP协议程序,多线程的并发上传,反射技术,反射由来,反射实现通过配置文件运行程序,反射的泛型擦除。
- 反射
- 反射
- 反射
- opencv学习(三)书本《学习Opencv》(中文版)第四章的样例Ex4-1(opencv3.0.0+VS2012+win7)
- CTS Fail项目解决方法集锦
- 2015 多校联赛 ——HDU5349(水)
- hdu 2203 亲和串(给两个字符串s1,s2,问s2可不可能出现在以s1为循环节的串中)
- 从一千万条短信中找出重复次数最多的前10条
- 多线程、反射
- Ubuntu 14.04 下安装HTK工具箱时编译错误的解决
- Mac Eclipse ADT 配置JRE
- 【leetCode】Two Sum
- hdu4533 威威猫系列故事——晒被子
- iOS UI04_Delegate
- Codeforces 4A
- 变量、JAVA基本类型、运算符和表达式-1
- Bootstrap的js插件之标签页(tab)