android - 在android studio中同时运行两个线程
问题描述
listener(new Listner() {
@Override
public void on Click(View view) {
Thread t =new Thread(new Runnable() {
@Override
public void run() {
User user =myAppDatabase.mydao().getUser();
enter code hereif(user==null){
`enter code here` user=new User();
myAppDatabase.mydao().insertcount(user);
}
final User user2 = user;
int count = user.getCount();
count +=1;
user.setCount(count);
myAppDatabase.mydao().updateCount(user.getId(),count);
}
});
t.start();
}
});
Thread s =new Thread(new Runnable() {
@Override
public void run() {
User user =myAppDatabase.mydao().getUser();
c=user.getCount();
if(c>m){
m=c;
b2.setText("count =" +c);enter code here
}
}
});
s.start();
}
}
解决方案
如果您想在单个程序中运行两个线程而不是通过这个简单的示例
private static int DEF_VALUE = 500;
private static int MIN_VALUE = 0;
private static int MAX_VALUE = 1000;
private AtomicInteger i = new AtomicInteger(DEF_VALUE);
private Thread t1 = null;
private Thread t2 = null;
private void initThreads() {
Log.i(TAG, "Initializing Threads...");
t1 = new Thread(new Runnable() {
@Override
public void run() {
Log.i(TAG, "Starting T1.");
while (i.get() < MAX_VALUE) {
i.incrementAndGet();
Log.d(TAG, String.format("Incremented by T1, i = %d", i.get()));
}
Log.i(TAG, "Finishing T1.");
}
});
t2 = new Thread(new Runnable() {
@Override
public void run() {
Log.i(TAG, "Starting T1.");
while (i.get() > MIN_VALUE) {
i.decrementAndGet();
Log.d(TAG, String.format("Decremented by T2, i = %d", i.get()));
}
Log.i(TAG, "Finishing T2.");
}
});
t1.start();
t2.start();
}
推荐阅读
- python - 从 Python 调用时 C DLL 破解
- javascript - 在移动设备上重定向下划线到 url 的前面
- jenkins - 无法在 groovy 中将主机名作为输入参数来运行 ansible playbook
- c# - C#如何在运行时获得管理员权限
- javascript - React Native Count One Up 函数
- azure-devops - 如何获得功能和故事的关键视图
- c - O(n) 子串算法
- sql - 按周对 sql 行进行分组
- javascript - Vue.js:如何在更改 vue 轮播中的幻灯片时重新运行代码
- reactjs - 在 React 项目中使用 css 模块时奇怪的事情