设为首页收藏本站

小牛社区-大数据学习交流社区|大数据免费学习资源

 找回密码
 立即注册!

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 77|回复: 0

Java中线程的使用

[复制链接]

135

主题

0

帖子

10

积分

吃土小白

Rank: 1

积分
10
发表于 2017-10-24 14:59:26 | 显示全部楼层 |阅读模式
简单的使用线程
1 . 扩展java.lang.Thread类
2 . 实现java.lang.Runnable接口
/** * 实现Runnable接口的类 */ publicclass DoSomethingimplements Runnable { private String name; publicDoSomething(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类实现的多线程程序 */ publicclassTestRunnable { 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对象上的数据。
publicclassMyRunnableimplementsRunnable {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(); } publicvoidrun() { 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
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册!

本版积分规则

快速回复 返回顶部 返回列表