java中线程的使用(未完)
来源:互联网 发布:伯爵和唯一视觉知乎 编辑:程序博客网 时间:2024/06/04 18:17
简单的使用线程
1 . 扩展java.lang.Thread类
/***定义线程类*/public class MyThread extends Thread { public void run() { System.out.println("MyThread.run()"); } }
//使用线程MyThread myThread1 = new MyThread(); MyThread myThread2 = new MyThread(); myThread1.start(); myThread2.start();
2 . 实现java.lang.Runnable接口
/** * 实现Runnable接口的类*/ publicclass DoSomethingimplements Runnable { private String name; public DoSomething(String name) { this.name = name; } publicvoid run() { for (int i = 0; i < 5; i++) { for (long k = 0; k < 100000000; k++) ; System.out.println(name + ": " + i); } } }
/** * 测试Runnable类实现的多线程程序*/ publicclass TestRunnable { publicstaticvoid main(String[] args) { DoSomething ds1 = new DoSomething("阿三"); DoSomething ds2 = new DoSomething("李四"); Thread t1 = new Thread(ds1); Thread t2 = new Thread(ds2); t1.start(); t2.start(); } }
线程的同步与锁
线程的同步是为了防止多个线程访问一个数据对象时,对数据造成的破坏。
例如:两个线程ThreadA、ThreadB都操作同一个对象Foo对象,并修改Foo对象上的数据。
public class Foo { privateint x = 100; publicint getX() { return x; } publicint fix(int y) { x = x - y; return x; } }
public class MyRunnable implements Runnable { private Foo foo =new Foo(); public staticvoid main(String[] args) { MyRunnable r = new MyRunnable(); Thread ta = new Thread(r,"Thread-A"); Thread tb = new Thread(r,"Thread-B"); ta.start(); tb.start(); } public void run() { for (int i = 0; i < 3; i++) { this.fix(30); try { Thread.sleep(1); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println(Thread.currentThread().getName() + " :当前foo对象的x值= " + foo.getX()); } } publicint fix(int y) { return foo.fix(y); } }
运行结果:
Thread-B :当前foo对象的x值= 40Thread-A :当前foo对象的x值= 40Thread-B :当前foo对象的x值= -20Thread-A :当前foo对象的x值= -20Thread-B :当前foo对象的x值= -80Thread-A :当前foo对象的x值= -80
0 0
- java中线程的使用(未完)
- Java中线程的使用
- 【Java】Java中线程的使用
- java线程编程中 interrupt 的使用
- Java中线程的介绍和使用
- Java中线程池的使用
- java中ThreadPoolExecutor线程池的使用
- java 线程中join的使用
- JAVA 中线程队列BlockingQueue的使用
- Java(Android)中线程池的使用
- Java中线程池的使用
- Java中线程池的使用
- Java 线程学习记录(未完)
- java中的线程和进程-未完待续
- Java的8中封装类(未完待续)
- Java中HashMap和TreeMap的区别(未完待续)
- 线程的创建和运行(未完待续)
- Java中concurrent包中线程池的使用
- Linux新建虚拟机设置IP,配置主机映射,连接CRT
- 软件测试分类-按照测试实施组织划分
- 如何使用android:supportsRtl
- 第八周项目3-顺序串算法(4)
- Java Web 案例1 -- IO,JDBC
- java中线程的使用(未完)
- innodb_buffer_pool特性和参数调整学习
- android Touch事件
- Servlet3.0学习总结(一)——使用注解标注Servlet
- io管道流 发牌代码
- iOS环信3.0集成 (三)单聊集成
- 表格排序——jQuery插件tablesorter的使用
- 自定义View_加载.gif图片
- MySQL解压版安装及编码设置